【问题标题】:Django URL with catch all except /admin and /blogDjango URL 捕获除 /admin 和 /blog 之外的所有内容
【发布时间】:2013-11-22 10:40:51
【问题描述】:

我想在我的 Django 项目中创建一个捕获所有 URL...

它工作正常,但现在我无法访问我的 /admin 和 /blog 页面 .. 知道我该怎么做吗?..

我的 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'),

【问题讨论】:

  • 当我去 /admin - 它只是进行搜索...

标签: django django-urls


【解决方案1】:

您无需使用 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。我认为您可以通过将 /$ 附加到该模式来修复最后一个 URL 模式

【讨论】:

    【解决方案2】:

    管理员和博客 URL 有尾部斜杠,即 /admin/ 和 /blog/。带有斜杠的网址现在应该可以使用。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-11
      • 2014-01-30
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      相关资源
      最近更新 更多