django入门三(视图)
生活随笔
收集整理的這篇文章主要介紹了
django入门三(视图)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
定義視圖
- 本質(zhì)就是一個(gè)函數(shù)
- 視圖的參數(shù)
- 一個(gè)HttpRequest實(shí)例
- 通過(guò)正則表達(dá)式組獲取的位置參數(shù)
- 通過(guò)正則表達(dá)式組獲得的關(guān)鍵字參數(shù)
- 在應(yīng)用目錄下默認(rèn)有views.py文件,一般視圖都定義在這個(gè)文件中
- 如果處理功能過(guò)多,可以將函數(shù)定義到不同的py文件中
URLCONFG
- 在settings.py文件中通過(guò)ROOT_URLCONF指定根級(jí)url的配置
- urlpatterns是一個(gè)url()實(shí)例的列表
- 一個(gè)url()對(duì)象包括:
- 正則表達(dá)式
- 視圖函數(shù)
- 名稱name
- 編寫URLconf的注意:
- 若要從url中捕獲一個(gè)值,需要在它周圍設(shè)置一對(duì)圓括號(hào)
- 不需要添加一個(gè)前導(dǎo)的反斜杠,如應(yīng)該寫作'test/',而不應(yīng)該寫作'/test/'
- 每個(gè)正則表達(dá)式前面的r表示字符串不轉(zhuǎn)義
- 請(qǐng)求的url被看做是一個(gè)普通的python字符串,進(jìn)行匹配時(shí)不包括get或post請(qǐng)求的參數(shù)及域名
- 正則表達(dá)式非命名組,通過(guò)位置參數(shù)傳遞給視圖
- 正則表達(dá)式命名組,通過(guò)關(guān)鍵字參數(shù)傳遞給視圖,本例中關(guān)鍵字參數(shù)為id
- 參數(shù)匹配規(guī)則:優(yōu)先使用命名參數(shù),如果沒(méi)有命名參數(shù)則使用位置參數(shù)
- 每個(gè)捕獲的參數(shù)都作為一個(gè)普通的python字符串傳遞給視圖
- 性能:urlpatterns中的每個(gè)正則表達(dá)式在第一次訪問(wèn)它們時(shí)被編譯,這使得系統(tǒng)相當(dāng)快
包含其他的URLCONFG
- 在應(yīng)用中創(chuàng)建urls.py文件,定義本應(yīng)用中的urlconf,再在項(xiàng)目的settings中使用include()
- 匹配過(guò)程:先與主URLconf匹配,成功后再用剩余的部分與應(yīng)用中的URLconf匹配
- 使用include可以去除urlconf的冗余
- 參數(shù):視圖會(huì)收到來(lái)自父URLconf、當(dāng)前URLconf捕獲的所有參數(shù)
- 在include中通過(guò)namespace定義命名空間,用于反解析
URL的反向解析
- 如果在視圖、模板中使用硬編碼的鏈接,在urlconf發(fā)生改變時(shí),維護(hù)是一件非常麻煩的事情
- 解決:在做鏈接時(shí),通過(guò)指向urlconf的名稱,動(dòng)態(tài)生成鏈接地址
- 視圖:使用django.core.urlresolvers.reverse()函數(shù)
- 模板:使用url模板標(biāo)簽
HttpReqeust對(duì)象
- 服務(wù)器接收到http協(xié)議的請(qǐng)求后,會(huì)根據(jù)報(bào)文創(chuàng)建HttpRequest對(duì)象
- 視圖函數(shù)的第一個(gè)參數(shù)是HttpRequest對(duì)象
- 在django.http模塊中定義了HttpRequest對(duì)象的API
屬性
- 下面除非特別說(shuō)明,屬性都是只讀的
- path:一個(gè)字符串,表示請(qǐng)求的頁(yè)面的完整路徑,不包含域名
- method:一個(gè)字符串,表示請(qǐng)求使用的HTTP方法,常用值包括:'GET'、'POST'
- encoding:一個(gè)字符串,表示提交的數(shù)據(jù)的編碼方式
- 如果為None則表示使用瀏覽器的默認(rèn)設(shè)置,一般為utf-8
- 這個(gè)屬性是可寫的,可以通過(guò)修改它來(lái)修改訪問(wèn)表單數(shù)據(jù)使用的編碼,接下來(lái)對(duì)屬性的任何訪問(wèn)將使用新的encoding值
- GET:一個(gè)類似于字典的對(duì)象,包含get請(qǐng)求方式的所有參數(shù)
- POST:一個(gè)類似于字典的對(duì)象,包含post請(qǐng)求方式的所有參數(shù)
- FILES:一個(gè)類似于字典的對(duì)象,包含所有的上傳文件
- COOKIES:一個(gè)標(biāo)準(zhǔn)的Python字典,包含所有的cookie,鍵和值都為字符串
- session:一個(gè)既可讀又可寫的類似于字典的對(duì)象,表示當(dāng)前的會(huì)話,只有當(dāng)Django 啟用會(huì)話的支持時(shí)
HttpResponse對(duì)象
- 在django.http模塊中定義了HttpResponse對(duì)象的API
- HttpRequest對(duì)象由Django自動(dòng)創(chuàng)建,HttpResponse對(duì)象由程序員創(chuàng)建
- 不調(diào)用模板,直接返回?cái)?shù)據(jù)
屬性
- content:表示返回的內(nèi)容,字符串類型
- charset:表示response采用的編碼字符集,字符串類型
- status_code:響應(yīng)的HTTP響應(yīng)狀態(tài)碼
- content-type:指定輸出的MIME類型
方法
- init?:使用頁(yè)內(nèi)容實(shí)例化HttpResponse對(duì)象
- write(content):以文件的方式寫
- flush():以文件的方式輸出緩存區(qū)
- set_cookie(key, value='', max_age=None, expires=None):設(shè)置Cookie
- key、value都是字符串類型
- max_age是一個(gè)整數(shù),表示在指定秒數(shù)后過(guò)期
- expires是一個(gè)datetime或timedelta對(duì)象,會(huì)話將在這個(gè)指定的日期/時(shí)間過(guò)期,注意datetime和timedelta值只有在使用PickleSerializer時(shí)才可序列化
- max_age與expires二選一
- 如果不指定過(guò)期時(shí)間,則兩個(gè)星期后過(guò)期
轉(zhuǎn)載于:https://www.cnblogs.com/huashengdoujiao/p/9366229.html
總結(jié)
以上是生活随笔為你收集整理的django入门三(视图)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 51 nod 1049 最大子段和 (简
- 下一篇: ASCII码、ISO8859-1、Uni