欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Django 使用 cookie 实现简单的用户管理

程序员文章站 2022-06-22 16:34:41
Cookie: 1.保存在用户浏览器 2.可以主动清除 3.可以被伪造 4.跨域名 Cookie 不共享 创建一个项目:user_manager 和应用: app01 创建数据库,添加 models.py 修改 urls.py 在 templates 文件夹下创建两个 html 文件 添加 view ......

1.保存在用户浏览器
2.可以主动清除
3.可以被伪造
4.跨域名 cookie 不共享


创建一个项目:user_manager 和应用: app01

创建数据库,添加 models.py

from django.db import models

# create your models here.


class classes(models.model):
    caption = models.charfield(max_length=32)


class student(models.model):
    name = models.charfield(max_length=32)
    cls = models.foreignkey(classes, on_delete=models.cascade)


class teacher(models.model):
    name = models.charfield(max_length=32)
    cls = models.foreignkey(classes, on_delete=models.cascade)


class administrator(models.model):
    username = models.charfield(max_length=32)
    password = models.charfield(max_length=32)

修改 urls.py

from django.contrib import admin
from django.urls import path

from app01 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login.html', views.login),
    path('index.html', views.index),
]

在 templates 文件夹下创建两个 html 文件

# login.html
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>title</title>
</head>
<body>
<form action="login.html" method="post">
    {% csrf_token %}
    <div>
        <label for="user">用户名: </label>
        <input id="user" type="text" name="user">
    </div>
    <div>
        <label for="pwd">密码: </label>
        <input id="pwd" type="password" name="pwd">
    </div>
    <div>
        <label></label>
        <input type="submit" value="登录">
        <span style="color: red;">{{ msg }}</span>
    </div>
</form>

</body>
</html>

# index.html
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>title</title>
</head>
<body>
<h1> hello {{ username }} </h1>

</body>
</html>

添加 views.py

from django.shortcuts import render, redirect


# create your views here.
from app01 import models


def login(req):
    # models.administrator.objects.create(
    #     username='klvchen',
    #     password='klvchen'
    # )

    message = ""
    if req.method == "post":
        user = req.post.get('user')
        pwd = req.post.get('pwd')
        c = models.administrator.objects.filter(username=user, password=pwd).count()
        if c:
            rep = redirect('index.html')
            rep.set_cookie('username', user)
            return rep
        else:
            message = "用户名或密码错误"
    return render(req, 'login.html', {'msg': message})


def index(req):
    username = req.cookies.get('username')
    if username:
        return render(req, 'index.html', {'username': username})
    else:
        return redirect('/login.html')

初始化数据库

python manage.py makemigrations
python manage.py migrate

启动

python manage.py runserver 8000

访问

输入错误的用户名或密码
Django 使用 cookie 实现简单的用户管理
输入正确的用户名和密码
Django 使用 cookie 实现简单的用户管理
Django 使用 cookie 实现简单的用户管理