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变更了规范吗?