Django Girls教程:在扩展部分遇到的用户认证问题

关于这篇文章

阅读了Django Girls Tutorial的扩展部分后,遇到了一些困难,所以将解决方案作为备忘录记录下来。

环境
– Python3.6
– Django2.1
– Ubuntu18

发生了什么?

在Django Girls教程的扩展部分中,
我正在阅读作业:给你的网站添加安全性。
这一章的内容是:
– 给我们在主要部分创建的博客网站添加登录和登出功能。
– 限制只有已登录的用户才能创建、编辑和删除文章。
在最后一部分,我修改了mysite/urls.py文件,以添加登录和登出页面的路径,但遇到了错误。

from django.contrib import admin
from django.urls import path
from django.conf.urls import include, url
from django.contrib.auth import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),
    path('accounts/login/', views.login, name='login'),
    path('accounts/logout/', views.logout, name='logout', kwargs={'next_page': '/'}),
]

在 Django Girls 网站上,上述代码使用的是 url() 和正则表达式来指定路径,但是在 Django2 中,建议使用 path() 来指定路径,而不是正则表达式。因此,我们修改为使用 path() 来指定路径,并且注意到 Django2.0 之后的变化,特别是在 path 配置上使用 “path” 进行 include。

控制台显示的错误内容

AttributeError: module 'django.contrib.auth.views' has no attribute 'login'

据说django.contrib.auth.views没有login属性。
当我用上述字符串进行搜索时,出现了一个stack overflow的帖子,报错信息为AttributeError: module Django.contrib.auth.views has no attribute,但是我尝试模仿却没有成功。

解决方案

根据 Django2 用户认证(登录认证)实现教程-2- 注册和登录/退出 进行参考。

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),
    path('accounts/', include('django.contrib.auth.urls')),
]

如果这样假设,它就会移动。
最初在Django中似乎已经准备好了用于用户认证的URL。
Django2变更了规范吗?

广告
将在 10 秒后关闭
bannerAds