【发布时间】:2019-07-31 23:22:35
【问题描述】:
我收到此警告,我想摆脱它... 我的 urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('admin', admin.site.urls),
re_path(r'^(?P<Model>[A-Za-z]+)',
GenericViewSet.as_view({'get': 'list', 'post': 'create'}),
) # aka model endpoint
]
我想要实现的是对 /admin 和 /admin/ 的请求落入管理站点,并且任何其他请求都将传递给我的通用模型处理 API。
问题是,当我只设置path('admin/', admin.site.urls) 时,对/admin 的请求会落到模型端点,而当我只设置path('admin', admin.site.urls) 时,对/admin/ 的请求会落到模型端点。我明白为什么会发生这种情况,Django 在将斜杠添加到末尾之前遍历所有端点,并使用附加的斜杠再次遍历它们。
所以我必须同时指定admin 和admin/ 路径,以使对/admin 和/admin/ 的请求都落入管理站点,这会导致出现警告......这可能不应该正在发生...
我可以绕过这个吗? (不改变我想要的 url 路径...)
附言我已将 APPEND_SLASH 设置为 True
编辑:
当我只使用时
urlpatterns = [
path('admin/', admin.site.urls),
]
对/admin 和/admin/ 的请求都正确落入管理页面。
【问题讨论】:
-
Django 默认将非斜线 url 重定向到斜线 url,即
/admin到/admin/。你不需要两个网址。请参阅APPEND_SLASH设置。 -
问题是当我只设置路径('admin/', admin.site.urls) 时,对/admin 的请求落到模型端点并且当我只设置路径('admin' , admin.site.urls),对 /admin/ 的请求落到模型端点。这不应该发生......这可能是真正的问题。