使用Django内置的Login和Logout。
前置条件
确保django.contrib.auth
在INSTALLED_APPS
里,如果使用django-admin startproject
生成的项目,则会自动配置好。
创建一个超级管理员用户:python manage.py createsuperuser
配置URL路由
主要使用django.contrib.auth.views
模板,配置url如下:
1 | from django.conf.urls import url |
创建login模板文件
默认情况下,django.contrib.auth.views.login
会寻找registration/login.html
作为自己的模板文件(也可以配置,后面会提及)。
在manage.py
的同级目录下创建templates/registration/
两级目录,并在该目录下创建login.html
文件,内容如下:
1 | {% extends 'base.html' %} |
base.html
应该放在templates/
下,可以从django的系统复制一个,或者复制这个文件
然后在settings.py
里设置TEMPLATES
如下:
1 | TEMPLATES = [ |
运行起来后会看到如下效果:
这个简单的页面已经可以做好登陆了:
- 输入正确的用户名和密码会跳转到
/accounts/profile/
(默认登陆后跳转页面) - 输入错误会给出提示
配置Login
为了适应实际项目,有一些参数需要配置。
使用自定义的模板文件,如果想要用core/login.html
替换默认的registration/login.html
模板文件,可以这样做:
1 | url(r'^login/$', auth_views.login, {'template_name': 'core/login.html'}, name='login'), |
或者传入一个自定义表单:
1 | url(r'^login/$', auth_views.login, {'authentication_form': 'cform'}, name='login'), |
前面提到登陆后的默认跳转页面为/accounts/profile/
,可以在settings.py
里添加LOGIN_REDIRECT_URL = 'home'
设置登陆后跳转URL。
如果login参数中有next
的话,会优先跳转到该地址。
Logout
同理,logout也可以进行配置。
自定义模板文件:
1 | url(r'^logout/$', auth_views.logout, {'template_name': 'logged_out.html'}, name='logout'), |
或者更简单的,通过next_page
参数返回主页:
1 | url(r'^logout/$', auth_views.logout, {'next_page': '/'}, name='logout'), |