首页 > 解决方案 > Django 没有将斜杠附加到管理 URL

问题描述

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

但是我希望 Django 匹配adminadmin/. 下面的正则表达式解决了这个问题,但访问admin不会附加斜杠(我在设置中将 APPEND_SLASH 设置为 True)。结果是难看的 url,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")),
]

标签: django

解决方案


您的 url 模式应该是r"admin/",不带问号,即强制使用斜杠。

然后在你的 settings.py 中验证

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

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

如果不删除问号,django 将不会添加尾部斜杠,因为没有它的 url 是有效的。


推荐阅读