Django No Mini与给定查询匹配

2024-10-01 00:28:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个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}$

我该怎么解决这个问题?在


Tags: 字符串py名称视图urltargethomenew
2条回答

问题在于你的URL模式。换个顺序,就可以了。在

变更单为:

urlpatterns = patterns('mini_url.views',
    url(r'^new_link/$', 'new_link'),
    url(r'^home/$', 'home'),
    url(r'^(?P<short>\w+)/$', 'target'),
)

由于url模式匹配的regex是\w+,所以当您执行/home或{}时

在这里,URL目标将首先匹配url(r'^(?P<short>\w+)/$', 'target'),,并使用参数new_linkhome调用视图target。这就是问题所在。在

问题是“new_link”和“home”都符合short_link视图的定义,因此它们被解释为对该页面的调用。您应该将short_链接移到底部,这样只有当其他链接都没有匹配时才会匹配。在

相关问题 更多 >