亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django框架視圖介紹與使用詳解

發布時間:2020-09-16 19:01:13 來源:腳本之家 閱讀:163 作者:笑-笑-生 欄目:開發技術

本文實例講述了Django框架視圖介紹與使用。分享給大家供大家參考,具體如下:

視圖

  • 視圖:即一個python函數,可以叫 視圖函數,或者簡稱 視圖,定義在 應用/views.py 文件中。
  • 作用:接收并處理請求,調用M和T,響應請求(返回HttpResponse或其子類)
  • 每一個用戶請求,都對應著一個視圖(和url地址),由視圖處理請求后,再返回html頁面內容給瀏覽器顯示。

URL配置及匹配

作用:建立url地址和視圖函數的對應關系,當用戶請求某個url地址時,讓django能找到對應的視圖函數進行處理。

配置url:

在應用下創建urls.py,然后在項目下的urls.py文件中包含進來:

# 項目下的urls.py
urlpatterns = [
  ...
  # 包含應用下的urls.py文件
  url(正則表達式, include('應用名.urls'))
]

在應用下的urls.py中,進行url請求的配置:

# 應用下的urls.py
urlpatterns = [
  # 每一個url配置項都需要調用url函數,指定兩個參數
  # 參數1: 匹配url的正則表達式
  # 參數2: 匹配成功后執行的視圖函數
  url(正則表達式, 視圖函數名),
]

案例:

通過http://127.0.0.1:8080/app01/index地址,要調用視圖函數index訪問首頁。則可配置如下(域名和端口號不需要配置,只需要配置 app01/index 部分):

在app01應用中創建urls.py文件,在該文件中配置url和視圖函數的對應關系:

# app01.py
urlpatterns = [
  ...
  # 進入首頁
  url(r'^index$', views.index),
]

在項目下urls.py中,把應用下的urls.py包含進來:

# Project01/urls.py
urlpatterns = [
  # 包含應用app01下的urls.py
  url(r'^app01/', include('app01.urls')),
]

url匹配流程

輸入如下地址,訪問首頁:

http://127.0.0.1:8000/app01/index?aa=1&bb=xx

匹配流程:

Django框架視圖介紹與使用詳解

url配置規則 (針對應用下的url配置)

正則表達式 應使用 ^ 和 $ 嚴格匹配請求url的開頭和結尾,以便匹配唯一的字符串

url匹配小結

  1. 域名、端口、參數不參與匹配
  2. 先到項目下的urls.py進行匹配,再到應用的urls.py匹配
  3. 自上而下的匹配
  4. 匹配成功的url部分會去掉,剩下的部分繼續作匹配
  5. 匹配不成功提示404錯誤

視圖函數

每一個請求的url地址,都對應著一個函數,叫視圖函數,由視圖函數處理請求后,再返回頁面內容給瀏覽器顯示。

應用/views.py 下,定義視圖函數,示例:

from django.http import HttpResponse
# 必須有一個參數request
def index(request):
  """進入首頁的視圖函數"""
  # 處理完請求,返回字符串內容給瀏覽器顯示
  return HttpResponse("Hello Python")

捕獲URL中的值

問題:對于如下的url地址,如何捕獲url上的兩個值(代表新聞類別和頁碼),并傳給視圖函數處理?

輸入如下地址:

# /show_news/新聞類別/頁碼
http://127.0.0.1:8000/show_news/1/2

解決: 把url中的需要獲取的值部分,設置為正則表達式的一個組 django在進行url匹配時,就會自動把匹配成功的內容,作為參數傳遞給視圖函數。

位置參數: url中的正則表達式組,和視圖函數中的參數一一對應,函數中的參數名可以隨意指定。

示例:

# 位置參數:新聞查看/新聞類別/第幾頁
url(r'^show_news/(\d+)/(\d+)$', views.show_news),
# 視圖函數:views.py
def show_news(request, a, b):
  """顯示新聞界面"""
  return HttpResponse("新聞界面:%s %s" % (a, b))

關鍵字參數: 在位置參數的基礎上,對正則表達式分組進行命名:

?P<組名>

視圖函數中參數名,必須和正則表達式分組名一致。

示例:

# 關鍵字參數:新聞查看/新聞類別/第幾頁
url(r'^show_news2/(?P<category>\d+)/(?P<page_no>\d+)$', views.show_news2),
# 視圖函數:views.py
def show_news2(request, category, page_no):
  """顯示新聞界面2"""
  return HttpResponse("新聞界面:%s %s" % (category, page_no))

錯誤視圖

Django內置了處理HTTP錯誤的視圖(在django.views.defaults包下),主要錯誤及視圖包括:

  • 404錯誤:page_not_found 視圖 (找不到界面)
  • 500錯誤:server_error 視圖    (服務器內部錯誤)
  • 403錯誤:permission_denied 視圖    (權限拒絕)

一、404錯誤及視圖

url匹配失敗后,django會調用內置的 page_not_found 視圖函數,該視圖函數會調用 404.html的模板進行顯示。

開發階段可以開啟調試模式,但產品上線后,要關閉調試模式。關閉調試模式后,會顯示一個標準的錯誤頁面

# 關閉調試模式(開發模式)
DEBUG = False
# 表示允許哪些域名可訪問當前網站
ALLOWED_HOSTS = ['*']

404錯誤界面可以自定義: 在項目templates目錄面創建404.html,django找不到界面時,就會使用該界面了

二、500錯誤及視圖

若是在執行視圖函數時出現運行時錯誤,Django會默認會調用 django.views.defaults.server_error 視圖,加載并顯示 500.html 模板:

server error (500)

類似的,可以在項目的templates目錄下,創建500.html來自定義該界面。

三、Django出錯日志查看:

查看 Exception Type 以及 Exception Value

Django框架視圖介紹與使用詳解

查看 Traceback中的出錯行

Django框架視圖介紹與使用詳解

希望本文所述對大家基于Django框架的Python程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绵阳市| 绥德县| 甘南县| 郓城县| 扶沟县| 新野县| 沂水县| 乌审旗| 精河县| 南雄市| 固阳县| 观塘区| 湖北省| 固安县| 海宁市| 河源市| 康平县| 防城港市| 东城区| 杨浦区| 新郑市| 汝南县| 富源县| 南郑县| 紫阳县| 浦县| 永川市| 临沂市| 安国市| 顺义区| 武定县| 中方县| 河曲县| 平果县| 陈巴尔虎旗| 东兰县| 大丰市| 铜梁县| 宁海县| 木里| 上杭县|