render() 函式
在講 render() 函式之前,我們在 Django 專案 index 檔案夾的 urls.py 和 views.py 中撰寫如下功能代碼:(不難,望讀者細心閱之)
# index的 urls.py from django.urls import path form . import views urlpatterns = [ # 定義首頁的路由 path(' ', views.index, name='index'), ]
# index的views.py from django.http import HttpResponse def index(request): html = '<h1> Hello World </h1>' return HttpResponse(html, status=200)
視圖函式 index 使用回應類 HttpResponse 實作回應程序,從 HttpResponse 的引數可知,第一個引數是回應內容,一般是網頁內容或 JSON 資料,網頁內容是以HTML語言為主的,JSON資料用于生成API介面資料,第二個引數用于設定HTTP狀態碼,它支持HTTP所有的狀態碼,
從原始碼角度分析,打開回應類 HttpResponse 的原始碼檔案,發現 Django內置的回應類(本人在上篇文章中已講過)都是在 HttpResponse 的基礎上實作的,只不過它們的HTTP狀態碼有所不同,如圖下所示,

從 HttpResponse 的使用程序可知,如果要生成網頁內容,就需要將 HTML 語言以 字串的形式表示,如果網頁內容過大,就會增加視圖函式的代碼量,同時也沒有體現模板的作用,因此Django在此基礎上進行了封裝處理,定義了函式 render 和 redirect,
render()語法如下:
render(request, template_name, context=None, content_type=None, status=None, using=None)
render 的引數 request 和 template name 是必需引數,其余的引數是可選引數,各個引數說明如下,
- request:瀏覽器向服務器發送的請求物件,包含用戶資訊、請求內容和請求方式等,
- template_name:設重模板檔案名,用于生成網頁內容,
- context:對模板背景關系(模板變數)賦值,以字典格式表示,默認情況下是一個空字典,
- content_type:回應內容的資料格式,一般情況下使用默認值即可,
- status:HTTP狀態碼,默認為200,
- using:設定模板引擎,用于決議模板檔案,生成網頁內容,
為了更好地說明 render 的使用方法,我們通過簡單的例子來加以說明,在Django專案的index檔案中的 views.py 和 templates 的 index.html 中撰寫以下代碼:
# index的 views.py from django.shortcuts import render def index(request): value = {'title': 'Hello Django'} return render(request, 'index.html', context=value)
# templates 的 index.html <!DOCTYPE html> <html> <body> <h3> {{ title }} </h3> </body> </html>
視圖函式 index 定義的變數 value 作為 render 的引數 context,而模板 index.html 里通過使用模板背景關系(模板變數){{ title }} 來獲取變數 value 的資料,背景關系的命名必須與變數 value 的資料命名(字典的key)相同,這樣 Django 內置的模板引擎才能將引數context(變數value)的資料與模板背景關系進行配對,從而將引數 context 的資料轉換成網頁內容,運行Django專案,在瀏覽器上訪問127.0.0.1:8000即可看到網頁資訊,如圖下所示,

希望以上內容能夠幫助到各位!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/278739.html
標籤:Python
下一篇:Python 基礎
