日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

django 快速实现session的操作

發布時間:2025/6/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django 快速实现session的操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說明:

  從這一篇開始就不再完整的介紹django項目的創建過程了,因為前面幾篇博客中都詳細的介紹了這個創建過程,套路都是一樣的,熟悉了這個套路,后面要做的是一些細節技術點的學習和練習。

?

  上一節講到了django中如何使用cookie來記錄用戶登錄信息,這一節來了解session是如何來記錄用戶登錄信息的。

?

創建項目,創建應用,設置settings.py的過程不再介紹。

項目目錄:

?

?

?

設置URL ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?

設置urls.py?文件如下:

from django.conf.urls import patterns, include, url from django.contrib import adminadmin.autodiscover()urlpatterns = patterns('',# Examples:# url(r'^$', 'csvt11.views.home', name='home'),# url(r'^blog/', include('blog.urls')), url(r'^admin/', include(admin.site.urls)),url(r'^login/$', 'online.views.login'),url(r'^index/$', 'online.views.index'),url(r'^logout/$', 'online.views.logout'), )

?

?

進行數據庫的同步 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?

因為本例中,我們不需要創建數據庫表(當然你可以參考前面幾章的例子創建用戶登錄的數據庫表),所以,這里直接執行數據庫的同步。

?

自動創建了一個叫django_session的表,這個表里就是用于存放我們的session信息的。

?

?

創建視圖 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?

views.py

#coding=utf-8 from django.shortcuts import render from django.shortcuts import render,render_to_response from django.http import HttpResponse,HttpResponseRedirect from django import formsclass UserForm(forms.Form):username = forms.CharField()#用戶登錄 def login(req):if req.method == "POST":uf = UserForm(req.POST)if uf.is_valid():username = uf.cleaned_data['username']#把獲取表單的用戶名傳遞給session對象req.session['username'] = usernamereturn HttpResponseRedirect('/index/')else:uf = UserForm()return render_to_response('login.html',{'uf':uf})#登錄之后跳轉頁 def index(req):username = req.session.get('username','anybody')return render_to_response('index.html',{'username':username})#注銷動作 def logout(req):del req.session['username'] #刪除sessionreturn HttpResponse('logout ok!')

  這里用到的就是session創建和刪除,代碼中有注釋。視圖是動能實現的核心邏輯,這里調用到了session的相關方法,非常簡單,需要說明的是session?是字典的形式存在的,比如一個sessionid?對應一個信息(比如,用戶名,密碼,添加到購物車的商品等。)

?

?

創建模板 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

?

login.html

<form method = 'post'>{{uf.as_p}}<input type="submit" value = "ok"/> </form>

?

index.html

<div><h1>welcome {{username}}</h1><a href="/logout">logout</a> </div>

?

?

訪問登錄

?

http://127.0.0.1:8000/login/

?

這里沒有判斷用戶密碼是否正常的邏輯,所以,輸入任意信息都可登錄。

?

?

查看瀏覽器session?id

?

?

?

查看數據庫

?

  看查,session?是用戶登錄的用戶名保存服務器端的數據庫中,而客戶端(瀏覽器)產生的只是一個session?id?,程序通過讀取客戶端的session?id?來查找對應的用戶名,并返回給客戶端,從而在客戶端的信息。在數據庫中并沒有看到剛才登錄的用戶名(Tom),標紅色下劃線的就是,只是對其進行了加密,所以會看到一串很長的大小寫字符串。

?

?登錄成功:

點擊logout退出:

再次訪問index頁

?

?  ?在index?頁面,點擊“logout”?退出后,就刪除了客戶端的session?id?信息,所以,再訪問index?頁面,就是會看到“weclome?anybody”的提示。

?

問題:

  按照正常的邏輯,用戶登錄是不準訪問登錄成功的頁面(index),這一塊就涉及到django 的“訪問限制”的相關方法。

總結

以上是生活随笔為你收集整理的django 快速实现session的操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。