Django URL匹配不起作用

时间:2015-01-05 06:23:42

标签: python django django-urls django-1.7

我在访问以下网址时遇到错误找不到网页(404)

http://localhost:8000/blog/blogroll/

我正在使用Python 3.4& Django 1.7。

这是我的项目网址:

from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'weblog.views.home', name='home'),
    url(r'^blog/', include('blog.urls', namespace='blog')),
    url(r'^admin/', include(admin.site.urls)),
)

这是我的应用程序“博客”的网址:

来自django.conf.urls导入模式,网址 来自博客导入视图

urlpatterns = patterns('',
       url(r'^$', views.index, name='index'),
       url(r'^(?P<slug>\S+)$', views.detail, name='detail'),
       url(r'^blogroll/$', views.blogroll, name='blogroll'),
       #url(r'^(?P<question_id>\d+)/results/$', views.results, name ='results'),
       #url(r'^(?P<question_id>\d+)/vote/$', views.vote, name='vote'),
       )

除此之外,以下网址正在运行:

http://localhost:8000/blog/

我无法找出错误在哪里。请指教。

提前感谢你!

1 个答案:

答案 0 :(得分:2)

url(r'^blogroll/$', views.blogroll, name='blogroll'),向上移动一行。

/blog/anything规则有机会匹配之前,

(?P<slug>...符合您的blogroll规则。

您还应该在捕获组外部使用slug结束/正则表达式,因为django倾向于喜欢以斜杠结尾的网址,如果使用{{1},您的变量将会捕获/ }}