zoukankan      html  css  js  c++  java
  • Django 使用 cookie 实现简单的用户管理

    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
    

    访问 http://127.0.0.1:8000/index.html

    输入错误的用户名或密码

    输入正确的用户名和密码

  • 相关阅读:
    kafka的概念
    java的多线程:java安全问题产生的原因与JMM的关系
    java的多线程:线程安全问题
    web自动化之键盘操作
    获取cookie里面的sessionid
    Python连接mysql数据库
    Python 发送Email
    Python日志模块
    openxl模块从excel里面读取数据
    Python读取配置文件
  • 原文地址:https://www.cnblogs.com/klvchen/p/10999354.html
Copyright © 2011-2022 走看看