1.保存在用戶瀏覽器
2.能夠主動清除
3.能夠被僞造
4.跨域名 Cookie 不共享html
建立一個項目:user_manager 和應用: app01python
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)
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), ]
# 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>
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
輸入錯誤的用戶名或密碼
輸入正確的用戶名和密碼
數據庫