【问题标题】:Django urls multiple parameters matching to wrong patternDjango urls 匹配错误模式的多个参数
【发布时间】:2015-11-16 09:48:36
【问题描述】:

我的目标是创建一个 url 结构,其中只需输入 mywebsite.com/apple/ 将返回 c_one,输入 mywebsite.com/apple/homepage 将返回 c_twocompany=applepagetype=homepage

但是,网址 mywebsite.com/apple/homepage 正在返回 c_one 并认为公司是“apple/homepage”。

我的代码在下面,让我知道是否有任何方法可以解决这个问题,让网址意识到如果使用斜线有两个变量。谢谢!

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')

【问题讨论】:

    标签: django url django-urls url-parameters


    【解决方案1】:

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

    同时使用\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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-22
      • 2010-12-03
      • 1970-01-01
      • 2014-07-25
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多