Django-視圖

如需了完整內(nèi)容請訪問:https://www.emperinter.info/2022/05/31/django-view/

視圖

概述

  • 作用:
    • 視圖接受web請求,并響應(yīng)Web請求
  • 本質(zhì):
    • 視圖就是 一個Python中的函數(shù)
  • 響應(yīng)內(nèi)容:
    • 網(wǎng)頁
      • 重定向
      • 錯誤視圖
        • 404:url找不到
        • 500: 服務(wù)器內(nèi)部錯誤
    • JSON數(shù)據(jù)

URL 配置

配置流程

  • settings.py中指定根級URL配置文件:ROOT_URLCONF = 'project.urls',默認(rèn)實現(xiàn)了。
  • urlpatterns:
    • 一個url實例的對象
    • url對象
      • 正則表達式
      • 視圖名稱
      • 名稱(用來反向解析的)
  • url匹配正則的注意事項:
    • 如果想要從url中獲取一個值,需要對正則加小括號
    • 匹配正確,前方不需要加小斜杠/,一般在最后加
    • 正則前需要加r表示字符串轉(zhuǎn)義

引入其它url配置

  • 一般在應(yīng)用中創(chuàng)建urls.py文件,定義本應(yīng)用的url配置,在工程urls.py文件中使用include()方法: url(r'^', include('myApp.urls',namespace='myApp')),

匹配過程

  • 工程url->應(yīng)用url->視圖

URL的反向解析(代理):

  • 概述
    • 如果在視圖/模板中使用了硬編碼的連接,在url配置發(fā)生改變時,動態(tài)生成鏈接的地址。
  • 解決思路
    • 在使用鏈接時,通過url配置的名稱,動態(tài)生成url地址。
  • 作用
    • 使用url模板的時候

視圖函數(shù)

定義視圖:

  • 本質(zhì):一個函數(shù)
  • 視圖參數(shù):
    • request 一個HttpRequest的實例
    • 通過url正則表達式獲取的參數(shù)
  • 位置:
    • 一般在views.py中定義

錯誤視圖

  • 404視圖
    • 找不到網(wǎng)頁(url匹配不成功)時返回。
    • 可以自己定義。
      • templates下定義404.html
        • request_path:導(dǎo)致出錯的網(wǎng)址。
      • 配置settings.py
        • DEBUG 如果為True 永遠(yuǎn)會調(diào)用404.html頁面
        • ALLOWED_HOSTS = [*]
  • 500視圖
    • 在視圖代碼中出現(xiàn)錯誤(服務(wù)器代碼)。
  • 400視圖
    • 錯誤是客戶的操作。

HttpRequest對象

概念

  • 接收HTTP請求后,會根據(jù)報文創(chuàng)建HttpRequest對象
  • 視圖的第一個參數(shù)就是HttpRequest對象
  • Djano對象創(chuàng)建的,之后調(diào)用試圖傳遞給視圖

屬性

  • path
    • 請求的完整路徑(不包括域名和端口)
  • method
    • 表示請求的方式,常用的有GET、POST
  • encoding
    • 表示瀏覽器提交的數(shù)據(jù)的編碼方式,一般為utf-8
  • GET
    • 類似字典的對象,包含了get請求的所有參數(shù)
  • POST
    • 類似字典的對象,包含了post請求的所有參數(shù)
  • FILES
    • 類似字典的對象,包含了所有上傳的文件。
  • COOKIES
    • 字典,包含所有的cookie
  • session
    • 類似字典的對象,表示當(dāng)前會話

方法

  • is_ajax()
    • 如果是XMLHttpRequest發(fā)起的,返回True

QueryDict對象

  • request對象中的GET、POST對象都屬于QueryDict對象
  • 方法
    • get()
      • 作用:根據(jù)鍵獲取值
      • 只能獲取一個值
      • www.baidu.com/abc?a=1&b=2&c=3
    • getlist()
      • 將鍵的值以列表形式返回
      • 可以獲取多個值
      • www.baidu.com/abc?a=1&a=2&c=3 (注意有兩個a)

GET屬性

# 獲取get傳遞的數(shù)據(jù)  
def get1(request):  
    a = request.GET.get("a")  
    b = request.GET["b"]  
    c = request.GET.get("c")  
    return  HttpResponse(a + " " + b + " " + c)  
  
def get2(request):  
    a = request.GET.getlist('a')  
    a1 = a[0]  
    a2 = a[1]  
    b = request.GET.get('c')  
    return HttpResponse(a1 + " " + a2 + " " + b)

POST屬性

  • 使用表單模擬提交post請求
  • 關(guān)閉CSRF:
MIDDLEWARE = [  
    'django.middleware.security.SecurityMiddleware',  
    'django.contrib.sessions.middleware.SessionMiddleware',  
    'django.middleware.common.CommonMiddleware',  
    # 'django.middleware.csrf.CsrfViewMiddleware',  
    'django.contrib.auth.middleware.AuthenticationMiddleware',  
    'django.contrib.messages.middleware.MessageMiddleware',  
    'django.middleware.clickjacking.XFrameOptionsMiddleware',  
]
  • test case
def showregister(request):  
    name = request.POST.get("username")  
    gender = request.POST.get("gender")  
    age = request.POST.get("age")  
    hobby = request.POST.getlist("hobby") # checkbox  
  
    info = str("name:\t" + name + "\tgender:" +gender + "\tage:" + age + "\thobby"+ str(hobby))  
    print(info)  
  
    return  HttpResponse(info)

HttpResponse對象

如需了解更多請訪問:https://www.emperinter.info/2022/05/31/django-view/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、概要 視圖可以一個python函數(shù),可以叫視圖函數(shù),或者簡稱視圖,也可以是是一個類,定義在views.py 文...
    唯老閱讀 539評論 0 8
  • URLconf 用戶通過在瀏覽器的地址欄中輸入網(wǎng)址請求網(wǎng)站,對于Django開發(fā)的網(wǎng)站,由哪一個視圖進行處理請求,...
    program_white閱讀 174評論 0 0
  • Django的起源&現(xiàn)狀 2005年發(fā)布,采用Python語言編寫的開源web框架 早期的時候Django主做新聞...
    樂智由我閱讀 626評論 0 1
  • 建立第一個項目 新建工程 進入你要建立工程的目錄,鍵入如下命令(其中mysite是你的項目名稱): django-...
    小小白老鼠閱讀 812評論 0 1
  • 視圖 視圖的功能 視圖負(fù)責(zé)接受Web請求HttpRequest,進行邏輯處理,返回Web響應(yīng)HttpRespons...
    現(xiàn)實里的童話xklss閱讀 435評論 0 0

友情鏈接更多精彩內(nèi)容