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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Django从理论到实战(part17)--模板概述

發布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django从理论到实战(part17)--模板概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,僅供參考

參考自:Django打造大型企業官網;

本系列Blog以應用為主,理論基礎部分我在后端專欄的Django系列博客已經寫過了,如果有些需要補充的知識點,我會在這個系列中,盡量詳細的記錄一下。



初識模板


關于模板


在之前的Blog中,視圖函數會直接返回文本,但是在實際場景中很少這樣用,因為實際的頁面大多是帶有樣式的HTML代碼,這可以讓瀏覽器渲染出漂亮的頁面。目前市面上有非常多的模板系統,其中最知名最好用的就是DTL和Jinja2。DTL是Django Template Language三個單詞的縮寫,也就是Django自帶的模板語言。當然也可以配置Django支持Jinja2等其他模板引擎,但是作為Django內置的模板語言,和Django可以達到無縫銜接而不會產生一些不兼容的情況。


DTL與普通的HTML文件的區別


DTL模板是一種帶有特殊語法的HTML文件,這個HTML文件可以被Django編譯,可以傳遞參數進去,實現數據動態化。在編譯完成后,生成一個普通的HTML文件,然后發送給客戶端。


渲染模板


渲染模板有多種方式。這里講下兩種常用的方式:

  • 第一種方式

利用render_to_string函數找到模板,并將模板編譯后渲染成Python的字符串格式,最后再通過HttpResponse類包裝成一個HttpResponse對象給瀏覽器,例如:

from django.template.loader import render_to_stringfrom django.http import HttpResponsedef book_detail(request,book_id):html = render_to_string("detail.html")return HttpResponse(html)
  • 第二種方式

以上方式雖然已經很方便了。但是django還提供了一個更加簡便的方式,直接將模板渲染成字符串和包裝成HttpResponse對象一步到位完成,例如:

from django.shortcuts import renderdef book_list(request):return render(request,'list.html')

這種方法的底層依然是先用render_to_string函數,將模板編譯成Python的字符串格式,然后再通過HttpResponse類包裝成一個HttpResponse對象,最后將HttpResponse對象返回,源碼為:

def render(request, template_name, context=None, content_type=None, status=None, using=None):content = loader.render_to_string(template_name, context, request, using=using)return HttpResponse(content, content_type, status)
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Django从理论到实战(part17)--模板概述的全部內容,希望文章能夠幫你解決所遇到的問題。

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