濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Django視圖函數(shù)的具體使用

Django視圖函數(shù)的具體使用

熱門(mén)標(biāo)簽:女王谷地圖標(biāo)注 長(zhǎng)春人工智能電銷(xiāo)機(jī)器人官網(wǎng) 西藏快速地圖標(biāo)注地點(diǎn) 廈門(mén)crm外呼系統(tǒng)如何 百應(yīng)ai電銷(xiāo)機(jī)器人鄭州 ai地圖標(biāo)注 地圖標(biāo)注推廣單頁(yè) n400電話申請(qǐng)多少錢(qián) 如何在地圖標(biāo)注文字

視圖是 MTV 設(shè)計(jì)模式中的 V 層,它是實(shí)現(xiàn)業(yè)務(wù)邏輯的關(guān)鍵層,可以用來(lái)連接 M 層與 T 層,起著紐帶般的作用,在《Django MTV和MVC的區(qū)別》中也做了相應(yīng)的介紹,所以它的重要性可想而知。

1. 第一個(gè)視圖函數(shù)

在 Django 中,視圖函數(shù)是一個(gè) Python 函數(shù)或者類,開(kāi)發(fā)者主要通過(guò)編寫(xiě)視圖函數(shù)來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯。視圖函數(shù)首先接受來(lái)自瀏覽器或者客戶端的請(qǐng)求,并最終返回響應(yīng),視圖函數(shù)返回的響應(yīng)可以是 HTML 文件,也可以是 HTTP 協(xié)議中的 303 重定向。接下來(lái)編寫(xiě)一個(gè)簡(jiǎn)單的視圖函數(shù):

from django.http import HttpResponse
def Hello_my_django(request):
 return HttpResponse('html>body>Hello my Django/body>/html>')

下面針對(duì)以上 3 行代碼做解析:

1)HttpResponse視圖響應(yīng)類型
從 django.http 模塊中導(dǎo)入 HttpResponse,從它簡(jiǎn)單的名字我們可以得知,它是一種視圖的響應(yīng)類型。

在HttpResponse對(duì)象上擴(kuò)展的常用方法:

  • - 頁(yè)面渲染:render(推薦),render_to_response,
  • - 頁(yè)面跳轉(zhuǎn):redirect
  • - locals: 可以直接將對(duì)應(yīng)視圖函數(shù)中所有的變量傳給模板

2)視圖函數(shù)參數(shù)request
我們定義了一個(gè)名為“Hello_my_django”的函數(shù),Django 規(guī)定了,視圖函數(shù)至少有一個(gè)參數(shù),第一個(gè)參數(shù)必須是 request,request 是 HttpRequest 請(qǐng)求類型的對(duì)象,它攜帶了瀏覽器的請(qǐng)求信息,所以視圖函數(shù)的第一個(gè)參數(shù)必須為 request。

當(dāng)請(qǐng)求一個(gè)頁(yè)面時(shí),Django 創(chuàng)建一個(gè) HttpRequest對(duì)象包含原數(shù)據(jù)的請(qǐng)求。然后 Django 加載適當(dāng)?shù)囊晥D,通過(guò) HttpRequest作為視圖函數(shù)的第一個(gè)參數(shù)。每個(gè)視圖負(fù)責(zé)返回一個(gè)HttpResponse目標(biāo)。

path:  請(qǐng)求頁(yè)面的全路徑,不包括域名
method:  請(qǐng)求中使用的HTTP方法的字符串表示。全大寫(xiě)表示。例如
     if req.method=="GET":
        do_something()
     elseif req.method=="POST":
        do_something_else()
GET:   包含所有HTTP GET參數(shù)的類字典對(duì)象
POST:  包含所有HTTP POST參數(shù)的類字典對(duì)象
    服務(wù)器收到空的POST請(qǐng)求的情況也是可能發(fā)生的,也就是說(shuō),表單form通過(guò)
    HTTP POST方法提交請(qǐng)求,但是表單中可能沒(méi)有數(shù)據(jù),因此不能使用
    if req.POST來(lái)判斷是否使用了HTTP POST 方法;應(yīng)該使用 if req.method=="POST"
COOKIES:  包含所有cookies的標(biāo)準(zhǔn)Python字典對(duì)象;keys和values都是字符串。
FILES:  包含所有上傳文件的類字典對(duì)象;FILES中的每一個(gè)Key都是input type="file" name="" />標(biāo)簽中 
   name屬性的值,F(xiàn)ILES中的每一個(gè)value同時(shí)也是一個(gè)標(biāo)準(zhǔn)的python字典對(duì)象,包含下面三個(gè)Keys:
   filename:  上傳文件名,用字符串表示
   content_type: 上傳文件的Content Type
   content:  上傳文件的原始內(nèi)容
user:  是一個(gè)django.contrib.auth.models.User對(duì)象,代表當(dāng)前登陸的用戶。如果訪問(wèn)用戶當(dāng)前
    沒(méi)有登陸,user將被初始化為django.contrib.auth.models.AnonymousUser的實(shí)例。你
    可以通過(guò)user的is_authenticated()方法來(lái)辨別用戶是否登陸:
    if req.user.is_authenticated();只有激活Django中的AuthenticationMiddleware
    時(shí)該屬性才可用
session: 唯一可讀寫(xiě)的屬性,代表當(dāng)前會(huì)話的字典對(duì)象;自己有激活Django中的session支持時(shí)該屬性才可用。
META:  一個(gè)標(biāo)準(zhǔn)的Python字典包含所有可用的HTTP頭??捎脴?biāo)題取決于客戶端和服務(wù)器,但這里是一些例子:
   CONTENT_LENGTH  – 請(qǐng)求體的長(zhǎng)度(一個(gè)字符串)。
   CONTENT_TYPE   – 請(qǐng)求體的類型。
   HTTP_ACCEPT   - 為響應(yīng)–可以接受的內(nèi)容類型。
   HTTP_ACCEPT_ENCODING – 接受編碼的響應(yīng)
   HTTP_ACCEPT_LANGUAGE – 接受語(yǔ)言的反應(yīng)
   HTTP_HOST   – 客戶端發(fā)送的HTTP主機(jī)頭。
   HTTP_REFERER   – 參考頁(yè)面
   HTTP_USER_AGENT  – 客戶端的用戶代理字符串。
   QUERY_STRING   – 查詢字符串,作為一個(gè)單一的(分析的)字符串。
   REMOTE_ADDR   – 客戶端的IP地址
   REMOTE_HOST   – 客戶端的主機(jī)名
   REMOTE_USER   – 用戶通過(guò)Web服務(wù)器的身份驗(yàn)證。
   REQUEST_METHOD  – 字符串,如"GET"或"POST"
   SERVER_NAME   – 服務(wù)器的主機(jī)名
   SERVER_PORT   – 服務(wù)器的端口(一個(gè)字符串)。

3)return視圖響應(yīng)
視圖函數(shù)要返回響應(yīng)內(nèi)容,這里的響應(yīng)內(nèi)容是我們用 HTML 標(biāo)簽編寫(xiě)的,把它作為 HttpResponse 的對(duì)象返回給瀏覽器。

2. 視圖函數(shù)執(zhí)行過(guò)程

上面視圖函數(shù)的代碼雖然區(qū)區(qū)幾行,但是已經(jīng)充分體現(xiàn)了視圖層的實(shí)現(xiàn)過(guò)程。 Django 收到請(qǐng)求以后,首先創(chuàng)建一個(gè)帶有請(qǐng)求信息的 HttpRequset 對(duì)象,將 HttpRequest 的對(duì)象 request 作為第一個(gè)參數(shù)傳遞給視圖函數(shù),視圖接收參數(shù)后繼續(xù)向下執(zhí)行,然后選擇加載對(duì)應(yīng)的視圖,最后返回 HttpResponse 對(duì)象給瀏覽器。

通過(guò)本節(jié)的介紹,我們應(yīng)該理解 View 視圖函數(shù)的作用,以及視圖函數(shù)的定義過(guò)程。

到此這篇關(guān)于Django視圖函數(shù)的具體使用的文章就介紹到這了,更多相關(guān)Django視圖函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Django框架視圖函數(shù)設(shè)計(jì)示例
  • Django基礎(chǔ)三之視圖函數(shù)的使用方法
  • 在Python的Django框架中包裝視圖函數(shù)
  • Django中URL視圖函數(shù)的一些高級(jí)概念介紹
  • Django中傳遞參數(shù)到URLconf的視圖函數(shù)中的方法

標(biāo)簽:拉薩 內(nèi)江 興安盟 黔東 亳州 廊坊 綿陽(yáng) 渭南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Django視圖函數(shù)的具體使用》,本文關(guān)鍵詞  Django,視圖,函數(shù),的,具體,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Django視圖函數(shù)的具體使用》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Django視圖函數(shù)的具體使用的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    鲁甸县| 平邑县| 鄂托克旗| 乌兰县| 赣榆县| 尉氏县| 临夏县| 云梦县| 井冈山市| 洞口县| 乐业县| 涡阳县| 天镇县| 临夏市| 太康县| 镇康县| 大新县| 剑河县| 同德县| 库车县| 南京市| 资源县| 保靖县| 洛南县| 门头沟区| 左云县| 绥宁县| 曲麻莱县| 安阳县| 德安县| 宁城县| 郧西县| 阳新县| 元谋县| 微博| 江达县| 大化| 武胜县| 鸡东县| 江华| 石泉县|