二十五 .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>

 

posted @ 2019-08-20 18:22  supreme999  阅读(247)  评论(0编辑  收藏  举报