亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

django框架模板語言使用方法詳解

 更新時間:2019年07月18日 11:37:09   作者:笑-笑-生  
這篇文章主要介紹了django框架模板語言使用方法,結(jié)合實(shí)例形式詳細(xì)分析了Django框架常用的模板語言語法與相關(guān)使用技巧,需要的朋友可以參考下

本文實(shí)例講述了django框架模板語言使用方法。分享給大家供大家參考,具體如下:

模板功能

作用:生成html界面內(nèi)容,模版致力于界面如何顯示,而不是程序邏輯。模板不僅僅是一個html文件,還包括了頁面中的模板語言。

  • 靜態(tài)內(nèi)容:css,js,html。
  • 動態(tài)內(nèi)容:通過模板語言,動態(tài)生成一些網(wǎng)頁內(nèi)容

模板使用: 在視圖函數(shù)中,使用模板產(chǎn)生html內(nèi)容返回給客戶端

方式一:

  1. 加載模板文件(loader.get_template)
  2. 模板渲染,產(chǎn)生標(biāo)準(zhǔn)的html頁面內(nèi)容(render)

通過HttpResponse對象,返回html界面內(nèi)容給瀏覽器

def index(request):
  """進(jìn)入首頁"""
  context = {}  # 字典
  # 獲取模板對象
  template = loader.get_template('index.html')
  # 渲染模板, 得到標(biāo)準(zhǔn)的html內(nèi)容
  html_str = template.render(context, request)
  # 響應(yīng)請求,返回html界面
  return HttpResponse(html_str)

方式二:

通過render()函數(shù)

def index(request):
  """進(jìn)入首頁"""
  context = {}  # 字典
  return render(request, 'index.html', context)

模板加載流程

Django會依次到以下目錄查找模板文件,如果都找不到,則報錯:

  1. 項(xiàng)目配置的模板目錄
  2. admin應(yīng)用的templates模板目錄
  3. auth應(yīng)用的templates模板目錄

應(yīng)用本身的templates模板目錄

模板語言

DTL.(Django Template Language)簡稱: 模板語言

模板變量

格式: {{ 變量名 }}

模板變量名: 是由數(shù)字,字母,下劃線組成,不能以下劃線開頭。

點(diǎn)(.) 也在會變量部分中出現(xiàn), 點(diǎn)號(.)用來訪問變量的屬性。

當(dāng)模版系統(tǒng)遇到點(diǎn)("."),它將以這樣的順序查詢:

  • 字典查詢(Dictionary lookup)
  • 屬性或方法查詢(Attribute or method lookup) (調(diào)用方法時不能傳參)
  • 數(shù)字索引查詢(Numeric index lookup)

如果模板變量不存在,則生成html內(nèi)容時用 '' 空字符串代替。

例如: {{ book.btitle }}

1) 首先把book當(dāng)成一個字典,把btitle當(dāng)成鍵名,進(jìn)行取值book['btitle']
2) 把book當(dāng)成一個對象,把btitle當(dāng)成屬性或方法,進(jìn)行取值

例如:{{ book.0 }}

1) 首先把book當(dāng)成一個字典,把0當(dāng)成鍵名,進(jìn)行取值book['0']
2) 把book當(dāng)成一個列表,把0當(dāng)成下標(biāo),進(jìn)行取值book[0]

模板標(biāo)簽

代碼段

{% 代碼段 %}

for 循環(huán)

遍歷列表:

{% for x in 列表 %}
  列表不為空時執(zhí)行
{% empty %}
  列表為空時執(zhí)行
{% endfor %}

若加上關(guān)鍵字reversed則倒序遍歷:

{% for x in 列表 reversed %}
{% endfor %}

遍歷字典:

{% for key, value in my_dict.items %}
  {{ key }}: {{ value }}
{% endfor %}

可以通過 {{ forloop.counter }} 判斷for循環(huán)執(zhí)行到第幾次,初始化值從1開始。

if 語句

{% if 條件 %}
{% elif 條件 %}
{% else %}
{% endif %}

關(guān)系比較操作符:

>    <     >=     <=     ==     !=

注意:進(jìn)行比較操作時,比較操作符兩邊必須有空格。

邏輯運(yùn)算:

not   and   or

過濾器

過濾器: 用于對模板變量進(jìn)行操作,使用格式:

模板變量|過濾器:參數(shù)

一、內(nèi)置過濾器

date: 改變?nèi)掌诘娘@示格式。

value|date:"Y年m月j日 H時i分s秒"

length: 求長度。字符串,列表,元組,字典長度

default: 設(shè)置模板變量的默認(rèn)值。

data|default:'默認(rèn)值'

二、自定義過濾器

需求: 實(shí)現(xiàn)兩個自定義過濾器:

(1)判斷是否奇偶
(2)求余操作

實(shí)現(xiàn)步驟:

  1. 創(chuàng)建包: 在應(yīng)用下創(chuàng)建名字為templatetags的python包(名字固定)
  2. 創(chuàng)建模塊: 在該templatetags下創(chuàng)建filters.py(名字隨意取),該名字后面會使用到。

定義函數(shù) 自定義過濾器即帶有一個或兩個參數(shù)的python函數(shù):

  • 參數(shù)1:模板變量
  • 參數(shù)2:參數(shù),可選

裝飾函數(shù)

  • 定義一個名字叫 register 的Library對象(名字固定)
  • 使用 @register.filter 對過濾器函數(shù)進(jìn)行裝飾

在模板界面中加載過濾器并使用: 在html中, 通過load標(biāo)簽導(dǎo)入自定義過濾器, 并使用:

模板注釋

單行注釋:

{# 注釋內(nèi)容 #}

多行注釋:

{% comment %}
 注釋內(nèi)容
{% endcomment %}

模板繼承

模板繼承: 為了重用html頁面內(nèi)容

使用格式: {% extends 父模板文件路徑 %}

塊的使用:

在父模板里可以定義塊:

{% block 塊名 %}
  塊中的內(nèi)容(也可以沒有)
{% endblock 塊名%}

在子模板頭部聲明繼承父模板:

{% extends 父模板文件路徑 %}

示例:

{% extends "app01/parent.html" %}

在子模板中,重寫父模板中的塊(也可以不重寫):

{% block 塊名 %}
  {{ block.super}} #獲取父模板中塊的默認(rèn)內(nèi)容
  重寫的內(nèi)容
{% endblock 塊名%}

Django中html轉(zhuǎn)義

通過視圖函數(shù)(render函數(shù))傳給模板的數(shù)據(jù),如果含有特殊字符,默認(rèn)是會轉(zhuǎn)義的。

要關(guān)閉模板上下文字符串的轉(zhuǎn)義:可以使用

{{ 模板變量|safe}}

也可以使用:

{% autoescape off %}
  模板語言代碼
{% endautoescape %}

模板硬編碼中的字符串默認(rèn)不會轉(zhuǎn)義,如果需要轉(zhuǎn)義,那需要手動進(jìn)行轉(zhuǎn)義。

url反向解析

url逆向解析,反向解析

需求:當(dāng)urls.py中的一個url配置項(xiàng)發(fā)生改變后,項(xiàng)目中所有硬編碼引用該url鏈接的地方,都需要作修改。

解決方法:

給url配置項(xiàng)起個名字,在html界面中,再通過名字引用該url:

# project下的urls.py
urlpatterns = [
  ...
  url(r'^', include('app01.urls', namespace='應(yīng)用名')),
]
# app01下的urls.py
urlpatterns = [
  ...
  url(r'^index$', views.index, name='url名稱'),
]

在html界面中,通過url標(biāo)簽進(jìn)行動態(tài)引用

{% url '應(yīng)用名:url名稱' %}
{% url '應(yīng)用名:url名稱' 位置參數(shù)1 位置參數(shù)2 %}
{% url '應(yīng)用名:url名稱' 關(guān)鍵字參數(shù)1 關(guān)鍵字參數(shù)2 %}

參考:

{% url 'app01:index' %}
{% url 'app01:show_news' 1 2 %}
{% url 'app01:show_news2' category=1 pageNo=2 %}

reverse函數(shù)

問題: 類似的,在python代碼中,同樣存在上面所說的url硬編碼不方便維護(hù)的問題

# views.py
def url_reverse(request):
  # url正則配置項(xiàng)修改后,此處url硬編碼代碼需要修改
  return redirect("/index")
  # return redirect("/show_news/1/2")
  # return redirect("/show_news2/1/2")

解決:使用reverse函數(shù),動態(tài)生成url。

# views.py
def url_reverse(request):
  # 動態(tài)引用
  # url = reverse("應(yīng)用名:url名稱")
  # url = reverse("應(yīng)用名:url名稱", args=[位置參數(shù)])
  # url = reverse("應(yīng)用名:url名稱", kwargs={關(guān)鍵字參數(shù)})
  return redirect(url)

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

相關(guān)文章

  • python機(jī)器人行走步數(shù)問題的解決

    python機(jī)器人行走步數(shù)問題的解決

    這篇文章主要為大家詳細(xì)介紹了python機(jī)器人行走步數(shù)問題的解決,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • python模擬鼠標(biāo)拖動操作的方法

    python模擬鼠標(biāo)拖動操作的方法

    這篇文章主要介紹了python模擬鼠標(biāo)拖動操作的方法,實(shí)例分析了Python鼠標(biāo)操作及鍵位操作的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • python調(diào)用git出錯的解決

    python調(diào)用git出錯的解決

    這篇文章主要介紹了python調(diào)用git出錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python scrapy爬取起點(diǎn)中文網(wǎng)小說榜單

    Python scrapy爬取起點(diǎn)中文網(wǎng)小說榜單

    爬蟲的基礎(chǔ)內(nèi)容已經(jīng)全部學(xué)玩,博主決定想著更加標(biāo)準(zhǔn)化以及實(shí)用能力更強(qiáng)的scrapy進(jìn)發(fā),今天記錄自己第一個scrapy爬蟲項(xiàng)目. scrapy爬取起點(diǎn)中文網(wǎng)24小時熱銷榜單,需要的朋友可以參考下
    2021-06-06
  • Python OpenCV招商銀行信用卡卡號識別的方法

    Python OpenCV招商銀行信用卡卡號識別的方法

    這篇文章主要介紹了Python OpenCV招商銀行信用卡卡號識別的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 詳細(xì)介紹Python的鴨子類型

    詳細(xì)介紹Python的鴨子類型

    相信python的開發(fā)者對于python的鴨子類型比較熟悉,鴨子類型在維基百科中的準(zhǔn)確定義是‘是動態(tài)類型的一種風(fēng)格。在這種風(fēng)格中,一個對象有效的語義,不是由繼承自特定的類或?qū)崿F(xiàn)特定的接口,而是由"當(dāng)前方法和屬性的集合"決定’。所以這篇文章給大家python的鴨子類型。
    2016-09-09
  • python中redis查看剩余過期時間及用正則通配符批量刪除key的方法

    python中redis查看剩余過期時間及用正則通配符批量刪除key的方法

    這篇文章主要介紹了python中redis查看剩余過期時間及用正則通配符批量刪除key的方法,需要的朋友可以參考下
    2018-07-07
  • Python中三元表達(dá)式的幾種寫法介紹

    Python中三元表達(dá)式的幾種寫法介紹

    今天小編就為大家分享一篇關(guān)于Python中三元表達(dá)式的幾種寫法介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • python爬取晉江文學(xué)城小說評論(情緒分析)

    python爬取晉江文學(xué)城小說評論(情緒分析)

    這篇文章主要介紹了使用python爬取晉江文學(xué)城小說評論(情緒分析),全文代碼詳細(xì),邏輯清晰,很適合學(xué)習(xí)爬蟲爬取的朋友,需要的朋友可以參考下
    2021-04-04
  • 一文講解如何查看python腳本所依賴三方包及其版本

    一文講解如何查看python腳本所依賴三方包及其版本

    Python因?yàn)榫哂谐嗟牡谌綆於淮蠹蚁矚g,下面這篇文章主要給大家介紹了關(guān)于如何查看python腳本所依賴三方包及其版本的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03

最新評論