django设置cookie和session
生活随笔
收集整理的這篇文章主要介紹了
django设置cookie和session
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 設置cookie
本例中應用名稱為cookie
模型model
from django.db import models
from django.db import models class UserInfo(models.Model):username = models.CharField(max_length=64)password = models.CharField(max_length=64)數據庫遷移
python manage.py makemigrations python manage.py migrate給數據庫添加數據
?
路由urls
from django.contrib import admin from django.urls import path from cookie import viewsurlpatterns = [path('admin/', admin.site.urls),path('login/', views.login),path('index/', views.index), ]視圖函數
from django.shortcuts import render, redirect, HttpResponse from cookie import modelsdef login(request):ret = ""if request.method == "POST":user = request.POST.get("user")pwd = request.POST.get("pwd")# 查詢數據庫中的用戶名和密碼user_obj = models.UserInfo.objects.filter(username=user, password=pwd).first()if user_obj:"""如果驗證通過,則重定向至index并設置cookie"""obj = redirect("/index/")obj.set_cookie("is_login", True, 30) # cookie有效期為30秒obj.set_cookie("username", user_obj.username)return objelse:ret = "用戶名或密碼錯誤"return render(request, "login.html", {"ret": ret})def index(request):is_login = request.COOKIES.get("is_login")username = request.COOKIES.get("username")if not is_login:return redirect("/login/")return render(request, "index.html", {"user": username})模板頁面
登錄頁面 login.html
<body> <h3>用戶登錄頁面</h3> <form action="/login/" method="post">{% csrf_token %}<p>用戶名:<input type="text" name="user"></p><p>密碼:<input type="password" name="pwd"></p><p><span>{{ ret }}</span></p><input type="submit" value="登錄" class="sub_btn"> </form> </body>首頁index.html
<body> <h3>這是index頁面。你好 {{ user }}</h3> </body>下來訪問測試一下
點擊登錄
可以看到,已經按預想跳轉至index頁面
下來看看設置的cookie
?
?再來看看,重定向訪問時攜帶的cookie值
?
2 設置session
創建應用
python manage.py startapp session
注冊應用
設置settings.py
INSTALLED_APPS = [...'cookie.apps.CookieConfig','session.apps.SessionConfig' ]路由urls
..... from session import views as session_viewsurlpatterns = [......path('session_login', session_views.session_login),path('session_index', session_views.session_index),path('session_logout', session_views.session_logout), ]視圖函數
from django.shortcuts import render, redirect from cookie import models # 由于要用到數據,所有要吃cookie應用里面導入def session_login(request):ret = ""if request.method == "POST":user = request.POST.get("user")pwd = request.POST.get("pwd")user_obj = models.UserInfo.objects.filter(username=user, password=pwd).first()if user_obj:"""如果驗證通過,則設置session,并返回session_index"""request.session["is_login"] = Truerequest.session["username"] = user_obj.usernameobj = redirect("/session_index/")return objelse:ret = "用戶名或密碼錯誤"return render(request, "session_login.html", {"ret": ret})?
def session_index(request):is_login = request.session.get("is_login")username = request.session.get("username")if not is_login:"""如果沒有登錄則跳轉至登錄頁面"""return redirect("/session_login")return render(request, "session_index.html", {"user": username})def session_logout(request):request.session.flush()return redirect("/session_login/")模板頁面
session_index.html
<h3>基于session的用戶登錄</h3> <form action="/session_login/" method="post">{% csrf_token %}<p>用戶名:<input type="text" name="user"></p><p>密碼:<input type="password" name="pwd"></p><p><span>{{ ret }}</span></p><input type="submit" value="登錄" class="sub_btn"> </form>session_index.html
<body> <h3>這是session_index頁面。</h3> <h3>你好 {{ user }}</h3> <a href="/session_logout/">注銷</a> </body>?
下來測試
?
?
可以看到數據庫中session表已經有數據了,session_key為隨機生成的,為請求時攜帶的cookie鍵,session_data為
request.session["is_login"] = Truerequest.session["username"] = user_obj.username,經過某種算法加密后的數
?
?
再來看看頁面
?
?
轉載于:https://www.cnblogs.com/Sunzz/p/10573246.html
總結
以上是生活随笔為你收集整理的django设置cookie和session的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python学习Day14 带参装饰器
- 下一篇: Python语言的程序结构