【问题标题】:Django not appending slash to admin URLDjango 没有将斜杠附加到管理 URL
【发布时间】:2018-12-28 12:59:47
【问题描述】:

我在项目的后端使用 Django,在前端使用 React。因此,我必须指定一个提供 index.html 的后备 URL,其中包含我所有前端代码的脚本。

但是我希望 Django 匹配 adminadmin/。下面的正则表达式解决了这个问题,但访问admin 不会附加斜杠(我在设置中将 APPEND_SLASH 设置为 True)。当我使用管理界面时,结果是看起来很丑的网址,例如 adminapis 而不是 admin/apis

知道如何保留斜杠吗?

urlpatterns = [
    re_path(r"admin/?", admin.site.urls),
    path("", include("api.urls", namespace="api")),
    re_path(r".*", TemplateView.as_view(template_name="index.html")),
]

【问题讨论】:

  • 你试过path("admin/", admin.site.urls),吗?默认情况下,它应该为/admin url 附加斜杠。
  • @neverwalkaloner 问题在于http://localhost:8000/admin 将匹配回退 URL 模式
  • 啊,所以你想让http://localhost:8000/admin 也可以不用斜线吗?
  • @neverwalkaloner 那将是理想的

标签: django


【解决方案1】:

您的网址格式应为r"admin/",不带问号,即强制使用斜杠。

然后在你的 settings.py 中验证它

  • 没有APPEND_SLASH=False(你想要默认值True
  • 你有'django.middleware.common.CommonMiddleware' MIDDLEWARE 元组(需要 APPEND_SLASH)。

现在,当您输入 url […]/admin 时,将自动添加尾部斜杠。

如果不去掉问号,django就不会加尾部斜杠,因为没有它的url也是有效的。

【讨论】:

  • 嘿....面临同样的问题,我的 url_patterns 看起来像 urlpatterns = [path('admin/', admin.site.urls),] ......而且 APPEND_SLASH 也是是的……仍然是我的管理站点没有自动重定向……我必须手动添加尾部斜杠……有什么想法吗??
  • 您不可能在 settings.py 中意外定义了两次 APPEND_SLASH?
  • 找到了.....缺少 contrib.common 中间件...APPEND_SLASH 需要它才能工作。!
  • 感谢您解决此问题,将其添加到答案中。
猜你喜欢
  • 2011-01-04
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
  • 2012-03-31
  • 2012-02-01
  • 1970-01-01
相关资源
最近更新 更多