Django中内置的登录、退出、修改密码方法。
1、url.py中使用django.contrib.auth中的views函数,django.views.generic中的TemplateView函数
from django.contrib import admin from django.urls import path from django.conf.urls import url,include from app import views from django.conf.urls import url,include from django.contrib.auth import views as auth_views #使用默认的视图函数来实现loginlogout from django.views.generic import TemplateView urlpatterns = [ url('admin/', admin.site.urls), url('login/$', auth_views.login, {"template_name": "registration/login.html"}, name="user_login"), # 内置login方法,定制页面,需设定settings中的默认页面 url('logout/$', auth_views.logout, {"template_name": "registration/logout.html"}, name="user_logout"),# 内置logout方法,定制页面 url(r'^password-change/$', auth_views.password_change,{'post_change_redirect': '/password-change-done'}, name="password_change"), #html页面在registration内,使用的内置方法,修改了页面 url(r'^password-change-done/$', auth_views.password_change_done, name="password_change_done"), url(r'home/',TemplateView.as_view(template_name="home.html"),name='home'),#默认的登录页面 url(r'^$',TemplateView.as_view(template_name="home.html"),name='home'), ]
2、登录页面、退出页面
可以使用默认的登录退出页面,但一般需要自己定制页面,实现功能的跳转。注意html文件存放在..\templates\registration下
login.html
{% extends "base.html" %} {% load staticfiles %} {% block title %}Login {% endblock %} {% block content %} <div class="row text-center vertical-middle-sm"> <h1>Login</h1> <p>Input your username and password</p> <form class="form-horizontal" action="{% url 'user_login' %}" method="post" >{% csrf_token %} <!-- {{ form.as_p }} --> <div class="form-group"> <label for="{{ form.username.id_for_label }}" class="col-md-5 control-label" style="color:red"><span class="glyphicon glyphicon-user"></span>Username</label> <div class="col-md-6 text-left">{{ form.username }}</div> </div> <div class="form-group"> <label for="{{ form.password.id_for_label }}" class="col-md-5 control-label" style="color:blue"><span class="glyphicon-floppy-open"></span>Password</label> <div class="col-md-6 text-left">{{ form.password }}</div> </div> <input type="submit" class="btn btn-primary btn-lg" value="Login"> </form> </div> {% endblock %}
logout.html
{% extends "base.html" %} {% block title %}Logout{% endblock %} {% block content %} <div class="row text-center vertical-middle-sm"> <p>You have log out!</p> <p>You can <a href="{% url 'user_login' %}"><strong>Login </strong> </a> again</p> </div> {% endblock %}