🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
创建app `startapp account` settings增加配置 ~~~ 'account' ~~~ 新建forms.py ~~~ # _*_ coding:utf-8 _*_ __author__ = 'canmeng' __date__ = '2018/1/8 12:54' from django import forms class LoginFrom(forms.Form): username = forms.CharField() password = forms.CharField(widget=forms.PasswordInput) ~~~ view配置 ~~~ # _*_ coding:utf-8 * _*_ from django.shortcuts import render #引入系统模块 from django.http import HttpResponse #引入内置用户管理 from django.contrib.auth import authenticate, login #引入forms类 from .forms import LoginFrom # Create your views here. def user_login(request): #method是HttpRequest对象的一个常用属性,可返回POST、GET if request.method == "POST": login_form = LoginFrom(request.POST) #is_valid验证传入数据是否合法性 if login_form.is_valid(): #cleaned_data引用一个字典类型数据 cd = login_form.cleaned_data #authenticate检验数据库帐号密码是否正确 user = authenticate(username=cd['username'], password=cd['password']) #login引入的login()函数,已语句user实例对象作为参数,实现用户登录,登录后调用session if user: #判断正确返回HttpResponse login(request, user) #redirect跳转 #return redirect("blog:blog_title") return HttpResponse("Wellcome YOU") else: return HttpResponse("Sorry") if request.method == "GET": login_form = LoginFrom() return render(request, "account/login.html", {"form":login_form}) ~~~ login.html样板 ~~~ {% extends "base.html" %} {% block title %}登录页面{% endblock %} {% block content %} <h1>系统登录</h1> <p>用户登录</p> <form class="form-horizontal" action="." method="post">{% csrf_token %} {# {{ form.as_p }}#} <label for="{{ form.username.id_for_lab }}">帐号</label> <div>{{ form.username }}</div> <label for="{{ form.password.id_for_lab }}">密码</label> <div>{{ form.password }}</div> <input type="submit" value="登录"> </form> {% endblock %} ~~~ 配置app urls ~~~ # _*_ coding:utf-8 _*_ __author__ = 'canmeng' __date__ = '2018/1/7 19:16' from django.conf.urls import url #引入app项目 view from .import views from django.conf import settings urlpatterns = [ url(r'^login/$', views.user_login, name="user_login"), ] ~~~ 配置项目urls ~~~ urlpatterns = [ #url(r'^admin/', admin.site.urls), url(r'^xadmin/', xadmin.site.urls), url(r'^blog/', include('blog.urls', namespace='blog')), url(r'^accout/', include('account.urls', namespace='account')), ] ~~~ 判断用户登录后显示文件 header.html样板 ~~~ {% load staticfiles %} <div class="container"> <nav class="navbar navbar-default" role="navigation"> <div class="nav-header"> <a class="navbar-brand" href="http://www.baidu.com"><img src="{% static '/static/images/logo.jpg' %}" width="100px"></a> </div> <div> <ul class="nav navbar-nav" role="navigation"> <li><a href="{% url 'blog:blog_title' %}">BLOG</a> </li> </ul> <ul class="nav navbar-nav navbar-right"> {# <li><a href="{% url 'account:user_login' %}">Login</a> </li>#} {# #判断用户登录后显示内容is_authenticated内置函数#} {% if user.is_authenticated %} <li><a href="#">{{ user.username }}</a> </li> {# #account:user_logout用户退出#} <li><a href="{% url 'account:user_logout' %}">Logout</a> </li> {% else %} {# #account:user_login用户登录#} <li><a href="{% url 'account:user_login' %}">Login</a> </li> {% endif %} </ul> </div> </nav> </div> ~~~ **第二版本引用系统自带登录、退出** **配置项目urls** ~~~ # _*_ coding:utf-8 _*_ __author__ = 'canmeng' __date__ = '2018/1/7 19:16' from django.conf.urls import url #引入app项目 view from .import views from django.conf import settings #引入系统自动登录views from django.contrib.auth import views as auth_views urlpatterns = [ #url(r'^login/$', views.user_login, name="user_login"),#自建系统登录 url(r'^login/$', auth_views.login, name="user_login"),#引入系统自带views登录 # url(r'^logout/$', auth_views.logout, name="user_logout"),#引入系统自带views退出 #用户退出,定义连接"template_name": "account/logout.html" url(r'^logout/$', auth_views.logout, {"template_name": "account/logout.html"}, name="user_logout"), ] ~~~ logout.html样板 ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> 安全退出 <a href="{% url 'blog:blog_title' %}">返回首页</a> </body> </html> ~~~ settings.py配置增加 ~~~ #判断用户登录后重定向访问地址 LOGIN_REDIRECT_URL = '/blog/' ~~~ **备注:因为引用的auth_views.login,所以需要根据系统自带配置修改 registration/login.html文件**