python django.contrib.auth.views LogoutView不工作

gblwokeq  于 12个月前  发布在  Python
关注(0)|答案(2)|浏览(122)

我正在使用最新版本的django,我想使用内置系统创建一个LogoutView。但是当我尝试运行服务器时,这会出错,并且无法使用LogoutView。


的数据
下面是urls.py代码。

from django.contrib import admin
from django.urls import path, include
from users import views as user_views
from django.contrib.auth import views as auth_views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('food/',include('food.urls')),

    path('register/',user_views.register,name='register'),

    path('login/',auth_views.LoginView.as_view(template_name='users/login.html'),name='login'),
    path('logout/',auth_views.LogoutView.as_view(template_name='users/logout.html'),name='logout'),

]

字符串
当我检查时,我发现错误是:

HTTP error code 405 stands for "Method Not Allowed."  Django's LogoutView, the expected method for logout is typically POST but this is getting in terminal:

"GET /logout/ HTTP/1.1" 405 0
Method Not Allowed (GET): /logout/
Method Not Allowed: /logout/

0kjbasz6

0kjbasz61#

当你开始写你的网站时,你使用django-admin startproject projectname命令创建了一个项目,这创建了一个名为projectname的目录,其中有一些文件,其中之一就是你的urls.py。
另外,你应该使用python manage.py startapp appname命令创建一个应用程序,因为django项目是由应用程序组成的。这会创建一个包含模型,视图等的应用程序目录。每个应用程序都应该有自己的urls.py,所以你必须创建一个。
从您所展示的内容来看,您将项目级别urls.py与应用程序urls.py混淆了。您的项目级别urls.py位于包含您的项目的目录中,应该如下所示:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('food/',include('food.urls')), # url pattern to include food app
    path('users/', include('users.urls')), # url pattern to include users app
]

字符串
我假设你的应用名称是users,因为你使用的是默认的Django的user auth。我猜你已经在settings.pyINSTALLED_APPS列表中定义了它,在列表中添加了'users'。在users app目录中创建一个名为urls.py的文件,并输入以下内容:

from django.urls import path, include
from users import views as user_views
from django.contrib.auth import views as auth_views

app_name = 'users'
urlpatterns = [
    # Include default auth urls.
    path('', include('django.contrib.auth.urls')),
    path('register/',user_views.register,name='register'),
    path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
    path('logout/', auth_views.LogoutView.as_view(template_name='users/logout.html'), name='logout'),
]


请确认您在urls.py中包含的路径没有错误。如果是这样,它现在应该可以工作了。请参阅docs

taor4pac

taor4pac2#

升级到5.0.1版本后也是如此。不太清楚原因,我建议先降级到4.2.9版本。

pip install django==4.2.9

字符串

相关问题