Django从理论到实战(part17)--模板概述
學(xué)習(xí)筆記,僅供參考
參考自:Django打造大型企業(yè)官網(wǎng);
本系列Blog以應(yīng)用為主,理論基礎(chǔ)部分我在后端專欄的Django系列博客已經(jīng)寫過了,如果有些需要補充的知識點,我會在這個系列中,盡量詳細的記錄一下。
初識模板
關(guān)于模板
在之前的Blog中,視圖函數(shù)會直接返回文本,但是在實際場景中很少這樣用,因為實際的頁面大多是帶有樣式的HTML代碼,這可以讓瀏覽器渲染出漂亮的頁面。目前市面上有非常多的模板系統(tǒng),其中最知名最好用的就是DTL和Jinja2。DTL是Django Template Language三個單詞的縮寫,也就是Django自帶的模板語言。當(dāng)然也可以配置Django支持Jinja2等其他模板引擎,但是作為Django內(nèi)置的模板語言,和Django可以達到無縫銜接而不會產(chǎn)生一些不兼容的情況。
DTL與普通的HTML文件的區(qū)別
DTL模板是一種帶有特殊語法的HTML文件,這個HTML文件可以被Django編譯,可以傳遞參數(shù)進去,實現(xiàn)數(shù)據(jù)動態(tài)化。在編譯完成后,生成一個普通的HTML文件,然后發(fā)送給客戶端。
渲染模板
渲染模板有多種方式。這里講下兩種常用的方式:
- 第一種方式
利用render_to_string函數(shù)找到模板,并將模板編譯后渲染成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)- 第二種方式
以上方式雖然已經(jīng)很方便了。但是django還提供了一個更加簡便的方式,直接將模板渲染成字符串和包裝成HttpResponse對象一步到位完成,例如:
from django.shortcuts import renderdef book_list(request):return render(request,'list.html')這種方法的底層依然是先用render_to_string函數(shù),將模板編譯成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)創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎
總結(jié)
以上是生活随笔為你收集整理的Django从理论到实战(part17)--模板概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 号称“200 万内最好的跑车”,哪吒 G
- 下一篇: 累计超额收益率