所以我使用这行
在root / project / urls.py中创建一个urlfrom django.conf.urls import include
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
path('users/', include('app.urls'))
]
在我的root / app / urls.py
中from django.urls import path
from .views import UserView, AuthenticationView
urlpatterns = [
path('register/', UserView.as_view()),
path('auth/', AuthenticationView.as_view()),
]
因此,我们需要http://localhost:8000/users/register
和http://localhost:8000/users/auth
个网址。
同时我的请求没有按预期行事。
显然它会在根路径和包含路径之间返回一个空格。我检查我的root / project / settings.py文件我找不到任何奇怪的设置。有人知道发生了什么吗?
答案 0 :(得分:3)
屏幕截图中的错误消息指出请求网址http://localhost:8000/users不存在。
在此,您将/users/
重定向到app.urls
:
path('users/', include('app.urls'))
但在app.urls
中,您从未在网址仅以" / users /"结尾时添加模式。相反," / users / register /"和" / users / auth /"都是指定的。
urlpatterns = [
path('register/', UserView.as_view()),
path('auth/', AuthenticationView.as_view()),
]
因此http://localhost:8000/users/register和http://localhost:8000/users/auth应该是有效的网址,但http://localhost:8000/users不是。
您可以在网址结束时添加其他网址格式" / users /":
urlpatterns = [
path('', AuthenticationView.as_view()), # maybe the same as /auth/ ?
path('register/', UserView.as_view()),
path('auth/', AuthenticationView.as_view()),
]
总而言之,Django实际上没有错误,因为该页面不存在(404),因为你在任何{{1}中都没有匹配http://localhost:8000/users }。
答案 1 :(得分:0)
该空间仅用于在调试屏幕上显示URL的构建方式。
我经历过同样的事情,起初我也认为Django以某种方式增加了空间。最后,实际上是指定的URL与浏览器中的URL不匹配。 Safari不会显示完整的网址,因此错误可能会很快发生...
答案 2 :(得分:-1)
您是否尝试使用正则表达式?
path(r'^admin/', admin.site.urls)
否则在Django 2版本中url架构已经更改,我使用url函数代替路径函数,这可能是你问题的可能解决方法