除了/ admin和/ blog之外,Django URL都可以捕获所有内容

时间:2013-11-22 10:40:51

标签: django django-urls

我想在我的Django项目中捕获所有URL ...

它工作正常,但现在我不能去我的/ admin和/博客页面..任何想法我怎么能这样做?..

我的urls.py

url(r'^admin/', include(admin.site.urls)),
(r'^blog/$', 'apps.blog.views.index'),

(r'^([a-zA-Z0-9\-\_]*)', 'apps.review.views.show_search'),

2 个答案:

答案 0 :(得分:2)

您无需使用RedirectView手动处理此问题。您可能需要将CommonMiddleware添加到MIDDLEWARE_CLASSES设置(如果它尚未存在)。 (将'django.middleware.common.CommonMiddleware'插入该列表或元组中)。它通常接近该声明的顶部。它的文档在这里:

https://docs.djangoproject.com/en/1.5/ref/middleware/#django.middleware.common.CommonMiddleware

您还需要确保APPEND_SLASH在您的设置中设置为True。

此外,你的最后一个模式很可能匹配任何东西,我怀疑这可能是你问题的真正罪魁祸首。没有尾部斜杠的URL必须无法匹配任何模式,以便它自动重定向到每个中间件的尾部斜杠。我认为您可以通过将/ $附加到该模式来修复最后的URL模式

答案 1 :(得分:0)

管理员和博客网址包含尾随斜杠,即/admin//blog/。带有斜杠的网址应该可以正常工作。

如果您想让网址在没有斜线的情况下工作,您可以添加/admin/blog的条目,并使用RedirectView重定向。