Python Django No Mini与给定查询匹配

Python Django No Mini与给定查询匹配,python,django,url,http-status-code-404,Python,Django,Url,Http Status Code 404,我编写了一个linkshortener应用程序,它采用常规的长url,并创建了一个10个字符的字母数字字符串,用于Django-1.5.1的重定向。 生成的字符串中的重定向链接可以很好地使用:url(r'^(?P\w+/$,'target'),,但由于某种原因,当我尝试访问其他两个视图(一个用于创建新的短url,另一个用于查看所有链接)时,我会看到一个404页面,上面显示“没有与给定查询匹配的小视图”令人费解的是,当我使用url(r'^$,'new_link'),或url(r'^$,'home'

我编写了一个linkshortener应用程序,它采用常规的长url,并创建了一个10个字符的字母数字字符串,用于Django-1.5.1的重定向。
生成的字符串中的重定向链接可以很好地使用:
url(r'^(?P\w+/$,'target'),
,但由于某种原因,当我尝试访问其他两个视图(一个用于创建新的短url,另一个用于查看所有链接)时,我会看到一个404页面,上面显示“没有与给定查询匹配的小视图”令人费解的是,当我使用
url(r'^$,'new_link'),
url(r'^$,'home'),

以下是my URL.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'),
)

如何解决此问题?

问题在于您的URL模式。更改顺序,它就会正常工作

将订单更改为:

urlpatterns = patterns('mini_url.views',
    url(r'^new_link/$', 'new_link'),
    url(r'^home/$', 'home'),
    url(r'^(?P<short>\w+)/$', 'target'),
)
urlpatterns=patterns('mini_url.views',
url(r“^new\u link/$”、“new\u link”),
url(r“^home/$”,“home”),
url(r'^(?P\w+/$,'target'),
)
由于url模式匹配的正则表达式是
\w+
,因此在执行
/home
/new\u链接时


这里,URL目标将首先匹配
URL(r'^(?p\w+/$,'target'),
,并使用
new\u link
home
参数调用视图
target
。因此问题就出现了。

问题在于“新建链接”和“主页”都与短链接视图的定义相匹配,因此它们被解释为对该页面的调用。您应该将短链接移到底部,这样只有当其他链接都不匹配时,它才会匹配。

我可以访问该页面,通过将其映射到urlpatterns中的r'^$'来创建新url,然后创建一个,并将其添加到数据库中,效果很好:
>>Mini.objects.get(短url='8OA1Ys97rR')
,问题是,如果我想通过r'^new\u link/$更改URL的顺序,我将无法访问该页面。它会很好用的
urlpatterns = patterns('mini_url.views',
    url(r'^new_link/$', 'new_link'),
    url(r'^home/$', 'home'),
    url(r'^(?P<short>\w+)/$', 'target'),
)