最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

django之狀態(tài)保持-使用redis存儲session的例子

 更新時間:2019年07月28日 17:59:15   作者:qq_19339041  
今天小編就為大家分享一篇django之狀態(tài)保持-使用redis存儲session的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

關(guān)于redis安裝,pip install django-redis-sessions,按照提示進(jìn)行安裝相關(guān)的服務(wù)端

和客戶端.

django版本1.8.2, Python版本2.7.12

1 進(jìn)入虛擬環(huán)境h1

 workon h1

2 創(chuàng)建一個項目test應(yīng)用booktest

django-admin startproject test

3 創(chuàng)建應(yīng)用booktest

進(jìn)入項目test目錄,創(chuàng)建應(yīng)用booktest,這個booktest應(yīng)用目錄和manage.py在

同級目錄下

python manage.py startapp booktest

4 定義一個session1視圖來匹配url /booktest/session1/時,使用templates/booktest

目錄下的,模板session1.html來展示頁面.

1 視圖session1的代碼如下:

from django.shortcuts import render


def session1(request):

  uname = None

  context = {'uname':uname}

  return render(request, 'booktest/session1.html', context)

2 配置url

1 根級url配置文件test/urls.py代碼如下:

  from django.conf.urls import include, url
  from django.contrib import admin

  urlpatterns = [

    url(r'^admin/', include(admin.site.urls)),

    url(r'^booktest/', include('booktest.urls')),

  ]

2 應(yīng)用booktest下面的url配置文件booktest/urls.py代碼如下:

  from django.conf.urls import url
  import views


  urlpatterns = [

    url(r'^session1/$', views.session1),

  ]

5 創(chuàng)建模板并進(jìn)行設(shè)置路徑,在項目目錄test下面新建一個templates目錄作為模板目錄

,在templates目錄下面創(chuàng)建booktest目錄,在booktest目錄下面創(chuàng)建一個模板文件

session1.html,

1 模板session1.html里面的body代碼如下:

        你好:{{uname}}
        <br>
        <a href="/booktest/session2/" rel="external nofollow" >登錄</a>
        <br>
        <a href="/booktest/session3/" rel="external nofollow" >退出</a>

2 對模板在settings.py進(jìn)行路徑設(shè)置

  'DIRS': [os.path.join(BASE_DIR, 'templates')],

6 此時可以進(jìn)行開發(fā)測試 ,終端輸入python manage.py runserver,按住ctrl鍵的同時

點擊 http://127.0.0.1:8000進(jìn)入一個頁面,在瀏覽器輸入以下url http://127.0.0.1:8000/booktest/session1/ 回車后結(jié)果如下

你好:None 
登錄 
退出

7 創(chuàng)建點擊登錄鏈接對應(yīng)的視圖session2及對url進(jìn)行配置

1 視圖session2代碼如下:

def session2(request):

  return render(request, 'booktest/session2.html')

2 booktest/urls.py的應(yīng)用url配置,添加如下代碼:

  url(r'^session2/$', views.session2),

3 在templates/booktest目錄下創(chuàng)建登錄表單對應(yīng)的模板文件session2.html

body代碼如下:

    <form action="/booktest/session2_handle/" method="post">

        用戶名: <input type="text" name="uname">
        <br>
        <input type="submit" value="提交">
    </form>

8 點擊登錄鏈接,進(jìn)入表單頁面,填寫用戶名提交,發(fā)現(xiàn)會以下報錯:

1  OperationalError at /booktest/session2_handle/
  no such table: django_session

解決辦法:在test/settins.py添加以下代碼,以保證session數(shù)據(jù)保存到redis

# SESSION_ENGINE = 'redis_sessions.session'
# SESSION_REDIS_HOST = 'localhost'
# SESSION_REDIS_PORT = '6379'
# SESSION_REDIS_DB = '0'
# SESSION_REDIS_PASSWORD = ''
# SESSION_REDIS_PREFIX = 'session'

使用django-admin startproject test默認(rèn)會開啟session.



2 Forbidden (403)

CSRF verification failed. Request aborted.

解決方法:在test/settins.py里面把 MIDDLEWARE_CLASSES的值里面以下代碼注釋

     'django.middleware.csrf.CsrfViewMiddleware',

9 創(chuàng)建對表單提交處理的視圖session2_handle,并進(jìn)行相關(guān)的url配置

1 session2_handle視圖代碼如下,要導(dǎo)入redirect

from django.shortcuts import redirect

def session2_handle(request):

  uname = request.POST['uname']

  request.session['myname'] = uname

  return redirect('/booktest/session1/')

  由于http協(xié)議是無狀態(tài)的,所以利用session來完成狀態(tài)保持,把表單里面

  用戶名輸入的值賦值給類字典對象request.session里面的鍵 'myname'

修改視圖session2對應(yīng)的代碼,把session類字典里面的鍵賦值給uname,使用

get方法可以避免uname = request.session['maname']在點擊退出時報錯.

KeyError at /booktest/session1/
  'myname'

  uname = request.session.get('myname', '未登錄')

2 booktest應(yīng)用下的視圖session2_handel對應(yīng)的url配置如下

url(r'^session2_handle/$', views.session2_handle),

10 創(chuàng)建點擊退出鏈接對應(yīng)的視圖session3,并對相關(guān)的url進(jìn)行配置

1 視圖session3代碼如下,作用刪除session回話,并重定向到/booktest/session1/

  def session3(request):

    del request.session['myname']

    return redirect('/booktest/session1/')

2 應(yīng)用下視圖session3對應(yīng)的url配置如下:

  url(r'^session3', views.session3)

11 終端輸入python manage.py runserver 進(jìn)行開發(fā)測試

1 當(dāng)輸入url是http://127.0.0.1:8000/booktest/session1/時 ,顯示如下

  你好:未登錄 
  登錄 
  退出

2 點擊登錄鏈接,進(jìn)入到表單頁面http://127.0.0.1:8000/booktest/session2/

  用戶名:
  提交

3 輸入用戶名ff,點擊提交按鈕,則重定向到

 http://127.0.0.1:8000/booktest/session1/

  你好:ff
  登錄 
  退出

4 點擊退出鏈接,也重定向到/booktest/session1/對應(yīng)的頁面,同時刪除會話

  你好:未登錄 
  登錄 
  退出

5 在redis觀察session類字典里面的鍵值對

 sudo service redis-server start  

 sudo ps ajx|grep redis

 redis-cli

 keys *   查看所有的鍵

 get 'myname' 查看鍵myname對應(yīng)值,

 get mcp20n5r2lcbzb1rqjw2mpqe2lakjnpc 

 查看該鍵對應(yīng)的值如下,拿到在線base64進(jìn)行解碼,即可

  "NzI4MzA2MmJlY2UxOWI2YWFlNjc2ZWZjMTY3NDE0OTJiMWFlMzgyNTp7Im15bmFtZSI6ImZmIn0="

  解碼后7283062bece19b6aae676efc16741492b1ae3825:{"myname":"ff"}

  由此可見,可以使用redis來存儲session,可以實現(xiàn)http狀態(tài)保持.  

以上這篇django之狀態(tài)保持-使用redis存儲session的例子就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python 使用xlwt模塊將多行多列數(shù)據(jù)循環(huán)寫入excel文檔的操作

    Python 使用xlwt模塊將多行多列數(shù)據(jù)循環(huán)寫入excel文檔的操作

    這篇文章主要介紹了Python 使用xlwt模塊將多行多列數(shù)據(jù)循環(huán)寫入excel文檔的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 如何關(guān)掉pycharm中的python console(圖解)

    如何關(guān)掉pycharm中的python console(圖解)

    本文通過圖文并茂的形式給大家介紹了如何關(guān)掉pycharm中的python console,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • Python pycharm 同時加載多個項目的方法

    Python pycharm 同時加載多個項目的方法

    今天小編就為大家分享一篇Python pycharm 同時加載多個項目的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • pytest fixtures裝飾器的使用和如何控制用例的執(zhí)行順序

    pytest fixtures裝飾器的使用和如何控制用例的執(zhí)行順序

    這篇文章主要介紹了pytest fixtures裝飾器的使用和如何控制用例的執(zhí)行順序,幫助大家更好的理解和使用pytest測試框架,感興趣的朋友可以了解下
    2021-01-01
  • Pytorch中的backward()多個loss函數(shù)用法

    Pytorch中的backward()多個loss函數(shù)用法

    這篇文章主要介紹了Pytorch中的backward()多個loss函數(shù)用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • pyinstaller還原python代碼過程圖解

    pyinstaller還原python代碼過程圖解

    這篇文章主要介紹了pyinstaller還原python代碼過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • python之multimethod包多分派解讀

    python之multimethod包多分派解讀

    這篇文章主要介紹了python之multimethod包多分派問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 如何使用Python逆向抓取APP數(shù)據(jù)

    如何使用Python逆向抓取APP數(shù)據(jù)

    今天給大伙分享一下 Python 爬蟲的教程,這次主要涉及到的是關(guān)于某 APP 的逆向分析并抓取數(shù)據(jù),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 利用Python生成隨機驗證碼詳解

    利用Python生成隨機驗證碼詳解

    怎么用python繞驗證碼是個令人頭禿的事情,這篇文章將為大家詳細(xì) 介紹如何利用Python生成隨機的驗證碼,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起試試
    2022-01-01
  • Python如何對齊字符串

    Python如何對齊字符串

    這篇文章主要介紹了Python如何對齊字符串,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07

最新評論

调兵山市| 民县| 武隆县| 齐齐哈尔市| 嘉善县| 石渠县| 湘西| 上饶县| 灵武市| 通州区| 汽车| 仁化县| 修文县| 郑州市| 秦皇岛市| 句容市| 永新县| 江源县| 萝北县| 达孜县| 金华市| 石柱| 彰化市| 涿州市| 禄丰县| 拜城县| 桐乡市| 宝兴县| 双城市| 秀山| 舟山市| 远安县| 诸暨市| 柳江县| 沂南县| 定远县| 汝州市| 香港| 永年县| 蒙城县| 德州市|