• 二十五 .Django---------auth认证组件


    一. Django------auth认证组件

    https://blog.csdn.net/huangql517/article/details/81381163    Django学习之用户认证组件

    https://www.cnblogs.com/liwenzhou/p/9030211.html   认证组件

    https://www.cnblogs.com/2mei/p/9217109.html       DJANGO用户登录验证完整代码

     https://download.csdn.net/download/baobao267/10722491  Django之Form表单验证及Ajax验证方式汇总

    https://download.csdn.net/download/baobao267/10722491 Django之Form表单验证及Ajax验证方式汇总
    https://blog.csdn.net/HFZeng/article/details/98654307
    https://blog.csdn.net/kkorkk/article/details/80150644
    https://www.jb51.net/article/165394.htm
    https://segmentfault.com/q/1010000009345281
    https://blog.csdn.net/huangql517/article/details/81259011

    1. 实例

    views

    from
    django.shortcuts import render, redirect, HttpResponse # Create your views here. from django.contrib import auth from django.contrib.auth.decorators import login_required from app01 import models from functools import wraps # def check_login(f): # @wraps(f) # def inner(request, *args, **kwargs): # if request.session.get("is_login") == "1": # return f(request, *args, **kwargs) # else: # return redirect("/login/") # return inner # # # def login(request): # if request.method == "POST": # username = request.POST.get("username") # password = request.POST.get("password") # # user = models.User.objects.filter(username=username, password=password) # [User Obj, ] # if user: # # 登陆成功 # request.session["is_login"] = "1" # # request.session["username"] = username # request.session["user_id"] = user[0].id # # 1. 生成特殊的字符串 # # 2. 特殊字符串当成key,在数据库的session表中对应一个session value # # 3. 在响应中向浏览器写了一个Cookie Cookie的值就是 特殊的字符串 # # return redirect("/index/") # # return render(request, "login.html") # # # @check_login # def index(request): # user_id = request.session.get("user_id") # # 根据id去数据库中查找用户 # user_obj = models.User.objects.filter(id=user_id) # if user_obj: # return render(request, "index.html", {"user": user_obj[0]}) # else: # return render(request, "index.html", {"user": "匿名用户"}) def login(request): if request.method == "POST": username = request.POST.get("username") pwd = request.POST.get("password") # 如何判断用户名和密码对不对 user = auth.authenticate(username=username, password=pwd) if user: ret = user.is_authenticated() print(ret) print("-" * 120) # 将登录的用户封装到request.user auth.login(request, user) return redirect("/index/") return render(request, "login.html") @login_required def index(request): print(request.user.username) print("=" * 120) ret = request.user.is_authenticated() print(ret) return render(request, "index.html") def logout(request): auth.logout(request) return redirect("/login/") # def register(request): # from django.contrib.auth.models import User # # # User.objects.create(username="alex", password="alexdsb") # 不用这个 # # User.objects.create_superuser() # user_obj = User.objects.create_user(username="alex5", password="alexdsb") # # 校验密码是否正确 # ret = user_obj.check_password("alex1234") # print(ret) # # 修改密码 # user_obj.set_password("alex3714") # user_obj.save() # return HttpResponse("o98k") def register(request): # User.objects.create(username="alex", password="alexdsb") # 不用这个 # User.objects.create_superuser() user_obj = models.UserInfo.objects.create_user(username="alex5", password="alexdsb") # 校验密码是否正确 ret = user_obj.check_password("alex1234") print(ret) # 修改密码 user_obj.set_password("alex3714") user_obj.save() return HttpResponse("o98k")
    urls
    
    
    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
    
        url(r'^login/$', views.login),
        url(r'^index/$', views.index),
        url(r'^logout/$', views.logout),
        url(r'^reg/$', views.register),
    ]
    models
    
    from django.db import models
    from django.contrib.auth.models import User, AbstractUser
    # Create your models here.
    
    # class User(models.Model):
    #     username = models.CharField(max_length=16)
    #     password = models.CharField(max_length=32)
    
    #
    # class UserDetail(models.Model):
    #     phone = models.CharField(max_length=11)
    #
    #     user = models.OneToOneField(to=User)
    
    
    class UserInfo(AbstractUser):
        phone = models.CharField(max_length=11)
        addr = models.CharField(max_length=128)
    settings
    
    
    # 如果没有登录,默认跳转到那个URL
    LOGIN_URL = "/login/"
    # 如果使用继承的方式 使用内置的auth模块,要在settings.py里面配置 默认用户认证时使用的是哪张表
    AUTH_USER_MODEL = 'app01.UserInfo'
    index模板
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>index</title>
    </head>
    <body>
    
    <h1>这是index页面!</h1>
    
    {#<p>欢迎:{{ user.username }} {{ user.password }}</p>#}
    
    
    <a href="/logout/">注销</a>
    </body>
    </html>
    login模板
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录</title>
    </head>
    <body>
    
    <h1>欢迎登录!</h1>
    <form action="/login/" method="post">
        {% csrf_token %}
    
        <p>
            用户名:
            <input type="text" name="username">
        </p>
        <p>
            密码:
            <input type="password" name="password">
        </p>
        <p>
            <input type="submit" value="登录">
        </p>
    </form>
    </body>
    </html>
  • 相关阅读:
    V4L2学习(三)框架分析
    Linux 内核源码外编译 linux模块--编译驱动模块的基本方法
    V4L2学习(二)结构介绍
    V4L2学习(一)整体说明
    Linux内存管理之mmap详解
    C语言指针分析
    V4L2使用V4L2_MEMORY_USERPTR和V4L2_MEMORY_MMAP的区别
    Ubuntu添加环境变量
    list_add_tail()双向链表实现分析
    Linux下查看USB设备信息
  • 原文地址:https://www.cnblogs.com/lovershowtime/p/11384744.html
Copyright © 2020-2023  润新知