【问题标题】:why is this django regex wont work?为什么这个 django 正则表达式不起作用?
【发布时间】:2013-08-26 23:59:11
【问题描述】:

我的博客应用程序的 urls.py 中有这个正则表达式,我想知道它为什么不起作用。

url(r'^/tag/(?P<tag_text>\w+)/$', views.tag, name='tag'),

我已经在博客的views.py中定义了这个

def tag(request,tag_text):

这在应用程序的 urls.py 中

url(r'^blog/', include('blog.urls')),

我试过了 本地主机/博客/标签/运动 但我仍然得到:当前 URL,博客/标签/运动,与其中任何一个都不匹配。 难道我做错了什么?

【问题讨论】:

  • 你不应该在 /sport 之后有一些东西,因为你在正则表达式上写的 \w+ 吗?
  • @PepperoniPizza \w+ 应该匹配标签名称(在本例中为 sport)。无论如何,关于主题:我认为您的模式正在尝试匹配额外的/。您在包含之前有一个尾随 /,在 tag url 中有一个前导 /;尝试删除其中之一。
  • @asermax 谢谢!是的,额外的斜线是问题所在。
  • 不认为它应该是一个答案,但如果你不介意我会把它写下来以供将来参考d:

标签: python regex django


【解决方案1】:

您的模式正在尝试匹配额外的 /,因为您的包含 url 需要尾部斜杠,而您的 tag url 正在尝试匹配前导斜杠。

您应该删除其中任何一个以使其正常工作:

# tag url in blog/urls.py
url(r'^tag/(?P<tag_text>\w+)/$', views.tag, name='tag'),

# include in project/urls.py
url(r'^blog/', include('blog.urls')),

【讨论】:

    猜你喜欢
    • 2013-12-05
    • 1970-01-01
    • 2013-05-18
    相关资源
    最近更新 更多