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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

django入门三(视图)

發(fā)布時間:2024/8/26 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django入门三(视图) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定義視圖 

  • 本質就是一個函數
  • 視圖的參數
    • 一個HttpRequest實例
    • 通過正則表達式組獲取的位置參數
    • 通過正則表達式組獲得的關鍵字參數
  • 在應用目錄下默認有views.py文件,一般視圖都定義在這個文件中
  • 如果處理功能過多,可以將函數定義到不同的py文件中
1 #新建views1.py 2 #coding:utf-8 3 from django.http import HttpResponse 4 def index(request): 5 return HttpResponse("hello world") 6 7 #在urls.py中修改配置 8 from . import views1 9 url(r'^$', views1.index, name='index'),

URLCONFG  

  • 在settings.py文件中通過ROOT_URLCONF指定根級url的配置
  • urlpatterns是一個url()實例的列表
  • 一個url()對象包括:
    • 正則表達式
    • 視圖函數
    • 名稱name
  • 編寫URLconf的注意:
    • 若要從url中捕獲一個值,需要在它周圍設置一對圓括號
    • 不需要添加一個前導的反斜杠,如應該寫作'test/',而不應該寫作'/test/'
    • 每個正則表達式前面的r表示字符串不轉義
  • 請求的url被看做是一個普通的python字符串,進行匹配時不包括get或post請求的參數及域名  
#只匹配“/python/1/”部分 http://www.baidu.com/python/1/?i=1&p=new 
  • 正則表達式非命名組,通過位置參數傳遞給視圖  
url(r'^([0-9]+)/$', views.detail, name='detail'),
  • 正則表達式命名組,通過關鍵字參數傳遞給視圖,本例中關鍵字參數為id
url(r'^(?P<id>[0-9]+)/$', views.detail, name='detail'), 
  • 參數匹配規(guī)則:優(yōu)先使用命名參數,如果沒有命名參數則使用位置參數
  • 每個捕獲的參數都作為一個普通的python字符串傳遞給視圖
  • 性能:urlpatterns中的每個正則表達式在第一次訪問它們時被編譯,這使得系統(tǒng)相當快

包含其他的URLCONFG

  • 在應用中創(chuàng)建urls.py文件,定義本應用中的urlconf,再在項目的settings中使用include()
from django.conf.urls import include, url urlpatterns = [url(r'^', include('usertest.urls', namespace='usertest')), ]
  • 匹配過程:先與主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入门三(视图)的全部內容,希望文章能夠幫你解決所遇到的問題。

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