Django視圖

一、HttpRequest對(duì)象

客戶端給服務(wù)器的請(qǐng)求對(duì)象

  • 概述

服務(wù)器接受到客戶端請(qǐng)求后,系統(tǒng)自動(dòng)創(chuàng)建的對(duì)象(視圖函數(shù)第一個(gè)參數(shù))

  • 屬性
-   path 請(qǐng)求路徑
-   method 請(qǐng)求方法
-   GET get請(qǐng)求參數(shù)
-   POST post請(qǐng)求參數(shù)
-   FILES 上傳文件
-   COOKIES cookie對(duì)象【會(huì)話技術(shù)】
-   session session對(duì)象【會(huì)話技術(shù)】
  • GET請(qǐng)求
# 參數(shù)獲取
name = request.GET.get('name')
  • POST請(qǐng)求
#參數(shù)獲取
name = request.POST.get('name')

二、HttpResponse對(duì)象

  • 概述

用于返回?cái)?shù)據(jù)給客戶端的

  • HttpResponse()
response = HttpResponse('hello')
response = HttpResponse('hello',status=200)
  • rander
response = render (request,'index.html')
response = render (request,'index.html',status=301)
  • redirect()
response = redirect('/meituan/')
  • JsonResopnse()
stu = {'name':'Tom','age':20}
response = JsonResponse(stu)

三、會(huì)話技術(shù)

  • 概述
HTTP 無(wú)狀態(tài) :請(qǐng)求一次扬卷,返回對(duì)應(yīng)的響應(yīng),稱為一次會(huì)話
會(huì)話技術(shù):實(shí)現(xiàn)狀態(tài)保持

為什么要使用會(huì)話保持酸钦?
    在一定時(shí)間段或操作中怪得,跟蹤請(qǐng)求者狀態(tài)![服務(wù)器就知道你是誰(shuí)]

github HTTP卑硫,沒(méi)操作都需要輸入用戶和密碼[服務(wù)器才知道你是誰(shuí)]

  • 會(huì)話技術(shù)
cookie :客戶端會(huì)話技術(shù)
session:服務(wù)器會(huì)話技術(shù)(依托cookie)
token:手動(dòng)session

四徒恋、會(huì)話技術(shù)

  • cookie會(huì)話技術(shù)

設(shè)置cookie

max_age = 0  默認(rèn)(瀏覽器關(guān)閉失效)
max_age = None (永不過(guò)期)
max_age = num  (過(guò)期時(shí)間,單位秒)

response.set_cookie('username',user.u_name,max_age = 3600 * 24 * 3)

獲取cookie

request.COOKIE.get(key, defaultvalue=None)

刪除cookie

response.delete_cookie(key)
  • session會(huì)話技術(shù)

啟用session

在settings文件中(默認(rèn)是已經(jīng)啟用)
    INSTALLED_APPS: 'django.contrib.sessions',
    MIDDLEWARE: 'django.contrib.sessions.middleware.SessionMiddleware',

設(shè)置session

request.session['username'] = user.u_name

獲取session

username = request.session.get(user.u_name)

刪除session

方式一:sessionid標(biāo)識(shí)存儲(chǔ)在cookie
     request.delete_cookie('sessionid')
 
方式二:session 服務(wù)端會(huì)話技術(shù)
    del request.session[username]

方式三:同時(shí)刪除cookie和sesion
    request.session.flush()

設(shè)置過(guò)期時(shí)間(默認(rèn)有效時(shí)間是兩周)

set_expiry(value)
    value是整數(shù)(秒數(shù)): request.session.set_expiry(10)
    value是時(shí)間對(duì)象
    value是0: 關(guān)閉瀏覽器時(shí)失效
    value是None: 永不過(guò)期

存儲(chǔ)session的位置

- 數(shù)據(jù)庫(kù) 
    默認(rèn)存儲(chǔ)在數(shù)據(jù)庫(kù)中欢伏,在settings.py中添加 
    SESSION_ENGINE = 'django.contrib.sessions.backends.db' 
- 緩存 
    只存儲(chǔ)在本地內(nèi)容中入挣,如果丟失不能找回,但速度會(huì)比在數(shù)據(jù)庫(kù)中快 
    SESSION_ENGINE = django.contrib.sessions.backends.cache' 
- 數(shù)據(jù)庫(kù)和緩存 
    有限從本地緩存中讀取硝拧,讀取不到再去數(shù)據(jù)庫(kù)中獲取 
    SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'

使用redis緩存session

-安裝redis: pip3 install django-redis-sessions
- 在settings.py中添加
     # redis服務(wù)相關(guān)信息 SESSION_ENGINE = 'redis_sessions.session'
     SESSION_REDIS_HOST = 'localhost'
     SESSION_REDIS_PORT = 6379
     SESSION_REDIS_DB = 0 # 選擇數(shù)據(jù)庫(kù)
     SESSION_REDIS_PASSWORD = '123456' #
     如果沒(méi)有密碼径筏,則不需要
     SESSION_REDIS_PREFIX = 'session' # 前綴
- 使用時(shí)還需要啟動(dòng)redis
    redis-server
  • token會(huì)話技術(shù)
在models.py中生成token
    token = models.CharField(max_length=100, null=Ture, default='')

MD5加密函數(shù)

def password_sec(password):
    md5 = hashlib.md5()
    md5.update(password.encode('utf-8'))
    return md5.hexdigest()

tokeen 唯一標(biāo)識(shí)

def generate_token():
    token = str(time.time())+str(random.random)
    
    md5 = hashlib.md5()
    md5.update(token.encode('utf-8'))
    return md5.hexdigest()

將token給客戶端

response.set_cookie('utoken',user.token)

獲取token

token = request.COOKIES.get('token')

刪除token

response.delete_cookie('token')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末葛假,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子滋恬,更是在濱河造成了極大的恐慌聊训,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,835評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恢氯,死亡現(xiàn)場(chǎng)離奇詭異带斑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)勋拟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門勋磕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人指黎,你說(shuō)我怎么就攤上這事≈莸ぃ” “怎么了醋安?”我有些...
    開封第一講書人閱讀 156,481評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)墓毒。 經(jīng)常有香客問(wèn)我吓揪,道長(zhǎng),這世上最難降的妖魔是什么所计? 我笑而不...
    開封第一講書人閱讀 56,303評(píng)論 1 282
  • 正文 為了忘掉前任柠辞,我火速辦了婚禮,結(jié)果婚禮上主胧,老公的妹妹穿的比我還像新娘叭首。我一直安慰自己,他們只是感情好踪栋,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,375評(píng)論 5 384
  • 文/花漫 我一把揭開白布焙格。 她就那樣靜靜地躺著,像睡著了一般夷都。 火紅的嫁衣襯著肌膚如雪眷唉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,729評(píng)論 1 289
  • 那天囤官,我揣著相機(jī)與錄音冬阳,去河邊找鬼。 笑死党饮,一個(gè)胖子當(dāng)著我的面吹牛肝陪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播刑顺,決...
    沈念sama閱讀 38,877評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼见坑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嚷掠!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起荞驴,我...
    開封第一講書人閱讀 37,633評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤不皆,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后熊楼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霹娄,經(jīng)...
    沈念sama閱讀 44,088評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,443評(píng)論 2 326
  • 正文 我和宋清朗相戀三年鲫骗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了犬耻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,563評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡执泰,死狀恐怖枕磁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情术吝,我是刑警寧澤计济,帶...
    沈念sama閱讀 34,251評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站排苍,受9級(jí)特大地震影響沦寂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜淘衙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,827評(píng)論 3 312
  • 文/蒙蒙 一传藏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧彤守,春花似錦毯侦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至做修,卻和暖如春霍狰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背饰及。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工蔗坯, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人燎含。 一個(gè)月前我還...
    沈念sama閱讀 46,240評(píng)論 2 360
  • 正文 我出身青樓宾濒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親屏箍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绘梦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,435評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 一橘忱、視圖概述 Django用視圖這個(gè)概念封裝處理用戶請(qǐng)求并返回響應(yīng)的邏輯。定義視圖函數(shù)相關(guān)的URL(網(wǎng)址) (即規(guī)...
    EndEvent閱讀 1,727評(píng)論 0 2
  • Session流程圖 應(yīng)用 對(duì)于敏感卸奉、重要的信息钝诚,建議要儲(chǔ)在服務(wù)器端,不能存儲(chǔ)在瀏覽器中榄棵,如用戶名凝颇、余額、等級(jí)疹鳄、驗(yàn)...
    IT的咸魚閱讀 938評(píng)論 0 1
  • 模塊間聯(lián)系越多拧略,其耦合性越強(qiáng),同時(shí)表明其獨(dú)立性越差( 降低耦合性瘪弓,可以提高其獨(dú)立性)垫蛆。軟件設(shè)計(jì)中通常用耦合度和內(nèi)聚...
    riverstation閱讀 2,063評(píng)論 0 8
  • 狀態(tài)保持 http協(xié)議是無(wú)狀態(tài)的:每次請(qǐng)求都是一次新的請(qǐng)求袱饭,不會(huì)記得之前通信的狀態(tài) 客戶端與服務(wù)器端的一次通信,就...
    lyh165閱讀 193評(píng)論 0 0
  • 遇見(jiàn)一個(gè)打著油紙傘的姑娘瓢喉。
    路燈不比星星亮閱讀 133評(píng)論 0 1