我的目标是创建一个网址结构,只需输入mywebsite.com/apple/
即可返回c_one
,输入mywebsite.com/apple/homepage
将c_two
返回company=apple
和{{ 1}}。
但是,网址pagetype=homepage
正在返回mywebsite.com/apple/homepage
并认为公司是" apple / homepage"。
我的代码如下所示,如果有任何解决此问题的方法让我知道如果使用斜杠,则会发现有两个变量。谢谢!
c_one
答案 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')