zoukankan      html  css  js  c++  java
  • Django的用户认证

    Django中用户登陆的实例:

    逻辑流程

    • 1、客户端发起请求,根据url规则会首先转至index函数,
    • 2、在index函数上添加一个装饰器('@login_required',django自带)。加入该装饰器后,请求index函数时,django会跳转至 'accounts/login/' 。
    • 3、在urls.py中设置将对 'accounts/login/'  的请求交给user_login函数处理。
    • 4、user_login函数里定义验证条件,验证通过,返回首页。验证失败,返回登陆页面,并提示错误。
    • 5、点击退出按钮,跳转至登陆页面

    index.html

    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>Students CRM</h1>
        {% block page-content %}
        Welcome to The Students CRM
        {% endblock %}
        <div>
            {% if request.user.is_authenticated %}    #如果登陆成功
                <span>{{ request.user }}</span>       #显示登陆名
            {% else %}
                <span>登陆/注册</span>
            {% endif %}
        </div>
        <div>
            <a href="accounts/logout">退出</a>
        </div>
    </body>
    </html>

    login.html

    {% extends 'index.html' %}
    
    {% block page-content %}
        <form action="" method="post"> {% csrf_token %}
            <div>
                <input type="text" name="username">
            </div>
            <div>
                <input type="password" name="password">
            </div>
            <div>
                <input type="submit" value="login">
            </div>
        </form>
        <div>
            {% if login_error %}
                <p style="color: red">{{ login_error }}</p>
            {% endif %}
        </div>
    {% endblock %}

    views.py

    #!_*_ coding:utf-8 _*_
    from django.shortcuts import render,HttpResponseRedirect
    from django.shortcuts import HttpResponse
    # Create your views here.
    
    #调用django装饰器
    from django.contrib.auth.decorators import login_required
    
    from django.contrib.auth import authenticate,login,logout
    
    @login_required       #装饰器,
    def index(request):
        return render(request,'index.html')
    
    def user_login(request):   #判断用户登陆
        if request.method=='POST':
            user = authenticate(username=request.POST.get('username'),password=request.POST.get('password'))
            if user is not None:   #user不为空,表示登陆成功
                login(request,user)
                return HttpResponseRedirect('/')  #登陆成功,跳转到首页
            else:
                login_error='wrong username or password'
                return render(request,'login.html',{'login_error':login_error})    #登陆失败,返回错误信息
        return  render(request,'login.html')
    
    def user_logout(request):   #退出登陆
        logout(request)
        return HttpResponseRedirect('/')

    urls.py

    from django.conf.urls import url
    from django.contrib import admin
    
    from stu_crm import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^$',views.index),
        url(r'^accounts/login/',views.user_login),
        url(r'^accounts/logout/',views.user_logout),
    ]
  • 相关阅读:
    设计模式学习08:享元模式
    设计模式学习07:适配器模式
    设计模式学习06:策略模式和简单工厂模式
    XCode Debugger中的Icon符号的意义
    蒲公英——APP内测分发平台
    分享申请IDP账号的过程,包含duns申请的分享
    Dash——程序员的的好帮手:API文档浏览器+代码片段管理工具
    xScope——界面设计师的终极工具箱
    Alcatraz——Xcode插件管理工具
    苹果向开发者发布 Xcode 6.3.2 GM版 修复 Bug
  • 原文地址:https://www.cnblogs.com/ahaii/p/5733939.html
Copyright © 2011-2022 走看看