我编写了一个linkshortener应用程序,它使用常规的长url,并创建一个10个字符的字母数字字符串,用于Django-1.5.1的重定向。
来自生成的字符串的重定向链接与:url(r'^(?P<short>\w+)/$', 'target'),
一起工作,但是由于某些原因,当我尝试访问另外两个视图(一个用于创建新的短url,另一个用于查看所有链接)时,我得到了一个404页,上面说“没有Mini匹配给定的查询”。令人费解的是,当我使用url(r'^$', 'new_link'),
或url(r'^$', 'home'),
时,一切正常
这是我的网址.py公司名称:
from django.conf.urls import patterns, url
urlpatterns = patterns('mini_url.views',
url(r'^(?P<short>\w+)/$', 'target'),
url(r'^new_link/$', 'new_link'),
url(r'^home/$', 'home'),
)
以及视图.py公司名称:
^{pr2}$我该怎么解决这个问题?在
问题在于你的URL模式。换个顺序,就可以了。在
变更单为:
由于url模式匹配的regex是}时
\w+
,所以当您执行/home
或{在这里,URL目标将首先匹配
url(r'^(?P<short>\w+)/$', 'target'),
,并使用参数new_link
或home
调用视图target
。这就是问题所在。在问题是“new_link”和“home”都符合short_link视图的定义,因此它们被解释为对该页面的调用。您应该将short_链接移到底部,这样只有当其他链接都没有匹配时才会匹配。在
相关问题 更多 >
编程相关推荐