我的目标是创建一个url结构,其中简单的输入mywebsite.com/apple/
将返回c_one
,而输入mywebsite.com/apple/homepage
将c_two
使用company=apple
and返回pagetype=homepage
。
但是,该URLmywebsite.com/apple/homepage
正在返回,c_one
并认为公司为“ apple / homepage”。
我的代码在下面,请让我知道URL是否有解决此问题的方法,以意识到如果使用斜杠,则存在两个变量。谢谢!
url(r'^c/(?P<company>[\w|\W]+)/$', views.c_one, name='c_one'),
url(r'^c/(?P<company>[\w|\W]+)/(?P<pagetype>[\w|\W]+)/$', views.c_two, name='c_two'),
url(r'^c/(?P<company>[\w|\W]+)/(?P<pagetype>[\w|\W]+)/(?P<topic>[\w|\W]+)/$', views.c_three, name='c_three')
问题在于您对模式的定义。
与同时使用,\w
而\W
你基本上说,任何给定的字符。
根据维基百科的定义\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')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句