django 自带的auth认证系统
版本: python2.7
django 1.8.16
project名称:site_test, app: study
目录结构:
->site_test:tree.├──db.sqlite3├──manage.py├──site_test│├──__init__.py│├──__init__.pyc│├──settings.py│├──settings.pyc│├──urls.py│├──urls.pyc│├──views.py│├──views.pyc│├──wsgi.py│└──wsgi.pyc├──static└──templates├──index.html├──login.html├──registration│└──login.html└──study
1、site_test/settings文件中
INSTALL_APPS中要包含django.contrib.auth和django.contrib.contenttypes。默认就有
django.contrib.contenttypes 是 auth 模块的用户权限处理部分依赖的应用
MIDDLEWARE_CLASSES中要包含:
SessionMiddleware :用户处理用户会话。
AuthenticationMiddleware: 绑定一个 User 对象到请求中。
默认就有这两个中间件
INSTALLED_APPS=(##其他应用,'django.contrib.auth','django.contrib.contenttypes',)MIDDLEWARE_CLASSES=('其他中间件列表','django.contrib.sessions.middleware.SessionMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware',)
2、site_test/urls.py 文件
login, loginout是django自带的方法,需要从django.contrib.auth.views中导入才能使用
fromdjango.conf.urlsimportinclude,urlfromdjango.contribimportadminimportviewsimportdjango.contrib.auth.viewsasauth_views##不要忘记导入这个urlpatterns=[url(r'^admin/',include(admin.site.urls)),url(r'^login/',auth_views.login),url(r'^logout/',auth_views.logout_then_login),url(r'^$',views.index),]
自带的url有以下这些:
^login/$[name='login']^logout/$[name='logout']^password_change/$[name='password_change']^password_change/done/$[name='password_change_done']^password_reset/$[name='password_reset']^password_reset/done/$[name='password_reset_done']^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$[name='password_reset_confirm']^reset/done/$[name='password_reset_complete']
3、site_test/views.py :
该文件定义了访问index页面的视图方法,该文件需要自己创建。加上login_required() 意思是在访问该页面之前需要登录
#coding:utf-8fromdjango.shortcutsimportredirect,renderfromdjango.contrib.auth.decoratorsimportlogin_required@login_required()defindex(request):returnrender(request,'index.html')
login.html:
该文件位于templates/registration/login.html
注意:login.html不一定要位于registration目录下
如果您不想调用模板registration/login.html,您可以通过额外的参数将template_name参数传递给as_view你的URLconf中的方法。
例如,下面URLconf中的行将使用myapp/login.html:
url(r'^accounts/login/$',auth_views.LoginView.as_view(template_name='myapp/login.html')),
login.html文件内容
<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title></title></head><body><formaction='.'method='post'>{%csrf_token%}<labelfor="username">用户名:</label><inputtype="text"name="username"value=""id="username"><labelfor="password">密码:</label><inputtype="password"name="password"value=""id="password"><!--<inputtype="submit"value="login">--><inputtype="submit"value="login"><inputtype="hidden"name="next"value="{{next|escape}}"></form></body></html>
4、settings.py中加 LOGIN_URL(未通过认证时跳转的认证页面) 和 LOGIN_REDIRECT_URL (登录成功后默认跳转的页面)
LOGIN_URL='/login' ##登录页面的url
LOGIN_REDIRECT_URL='/' ##登陆后跳转的页面,即索引页面
5、index.html文件
html文件中要可以直接通过{{ user }}获取用户名
<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title></title></head><body>{{user}}<ahref="/logout/">退出</a><h2>欢迎访问index页面</h2></body></html>
登录测试
注销后返回到登录页面
参考文档:http://python.usyiyi.cn/translate/django_182/topics/auth/default.html
http://blog.nsfocus.net/django-easy-steps-user-authentication/
https://www.zmrenwu.com/post/30/
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。