Django将多个参数匹配到错误的模式

时间:2015-08-22 14:49:05

标签: django url django-urls url-parameters

我的目标是创建一个网址结构,只需输入mywebsite.com/apple/即可返回c_one,输入mywebsite.com/apple/homepagec_two返回company=apple和{{ 1}}。

但是,网址pagetype=homepage正在返回mywebsite.com/apple/homepage并认为公司是" apple / homepage"。

我的代码如下所示,如果有任何解决此问题的方法让我知道如果使用斜杠,则会发现有两个变量。谢谢!

c_one

1 个答案:

答案 0 :(得分:2)

问题在于你对模式的定义。

同时使用\w\W,您基本上都会说任何给定的字符

根据Wikipedia\w的定义为[A-Za-z0-9_]\W的定义为[^A-Za-z0-9_]。基本上\W\w的补充,所以你匹配任何角色。

像这样修改您的配置,它应该有效:

url(r'^c/(?P<company>\w+)/$', views.c_one, name='c_one'),
url(r'^c/(?P<company>\w+)/(?P<pagetype>\w+)/$', views.c_two, name='c_two'),
url(r'^c/(?P<company>\w+)/(?P<pagetype>\w+)/(?P<topic>\w+)/$', views.c_three, name='c_three')