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