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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

html 列表循环_python web开发:内置标签与过滤器/循环/条件判断

發(fā)布時(shí)間:2024/4/13 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html 列表循环_python web开发:内置标签与过滤器/循环/条件判断 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
專注于python領(lǐng)域優(yōu)質(zhì)技術(shù),歡迎關(guān)注

這一篇教程,我們繼續(xù)了解Django中模板的使用。

主要內(nèi)容如下:

  • 內(nèi)置標(biāo)簽和過(guò)濾器;
  • 模板中使用循環(huán);
  • 模板中添加條件判斷。

一、內(nèi)置標(biāo)簽和過(guò)濾器

Django中有很多的內(nèi)置標(biāo)簽,例如之前已經(jīng)使用的block和extends。

過(guò)濾器實(shí)際上就是一些函數(shù),幫助我們進(jìn)行數(shù)據(jù)的處理。

我們可以通過(guò)管道符“|”使用過(guò)濾器,格式為“{{ 變量|過(guò)濾器1|過(guò)濾器2 }}”。

我們來(lái)做個(gè)練習(xí),試用幾個(gè)過(guò)濾器。

首先,我們?cè)谝晥D中先添加一個(gè)視圖函數(shù)。

在視圖函數(shù)中,我們添加兩項(xiàng)數(shù)據(jù)和頁(yè)面內(nèi)容進(jìn)行整合。

示例代碼:

def fiter_test(request): return render(request, 'filter.html', {'letters': 'abc', 'number': 1})

然后,我們添加URL分發(fā)配置。

示例代碼:

path('filter/', siteviews.fiter_test),

最后,我們創(chuàng)建一個(gè)模板文件’filter.html’,在模板文件中我們使用過(guò)濾器對(duì)數(shù)據(jù)進(jìn)行處理。

示例代碼:

過(guò)濾器{{ letters|length }}
{{ letters|upper }}
{{ letters|join:',' }}
{{ number|add:1 }}
{{ number|add:-1 }}

在模板代碼中,我們通過(guò)過(guò)濾器對(duì)字符串‘letters’分別進(jìn)行了長(zhǎng)度獲取、轉(zhuǎn)為大寫(xiě)以及逗號(hào)分隔的操作;對(duì)數(shù)字“number”分別進(jìn)行了加1和減1的操作。

頁(yè)面顯示結(jié)果:

二、模板中使用循環(huán)

在一個(gè)模板頁(yè)面中添加單個(gè)數(shù)據(jù)可以通過(guò)“{{ 變量名 }}”的方式來(lái)實(shí)現(xiàn)。

如果需要添加多個(gè)數(shù)據(jù),則可以通過(guò)字典來(lái)實(shí)現(xiàn)。

例如,視圖中向模板頁(yè)面?zhèn)魅氲臄?shù)據(jù)為字典(例如:{‘person’:{‘name’:’小樓’,’sex’:’男’}}),在模板中則可以通過(guò)“{{ person.name }}”和“{{ person.sex}}”獲取到相應(yīng)的數(shù)據(jù)。

但是,如果頁(yè)面中我們需要呈現(xiàn)一個(gè)列表(例如新聞列表),這時(shí)會(huì)有大量的數(shù)據(jù)需要處理,該如何實(shí)現(xiàn)呢?

另外,如果列表中有個(gè)別的項(xiàng)需要處理(例如第一項(xiàng)為紅色字體),如何處理呢?

這些需求的實(shí)現(xiàn),需要在模板中使用循環(huán)和條件判斷。

如果有新聞列表內(nèi)容的話,我們需要能夠在頁(yè)面中呈現(xiàn)出來(lái)。

這就需要在視圖函數(shù)中獲取一個(gè)新聞列表的數(shù)據(jù)內(nèi)容,并在模板中循環(huán)加載出每一個(gè)列表項(xiàng)。

因?yàn)?#xff0c;我們還沒(méi)有接觸過(guò)模型(Model),暫時(shí)還不能和數(shù)據(jù)庫(kù)進(jìn)行關(guān)聯(lián),在這里我們先手動(dòng)寫(xiě)出一個(gè)新聞列表的內(nèi)容數(shù)據(jù)。

1、定義視圖函數(shù)

在之前編寫(xiě)好的視圖函數(shù)中,我們寫(xiě)出一個(gè)新聞列表內(nèi)容,然后整合到模板定義的頁(yè)面內(nèi)容中。

此處只以經(jīng)濟(jì)新聞為例。

示例代碼:

def news_list(request, news_type): news_dict = {'economic': '經(jīng)濟(jì)', 'sport': '體育'} news_titles = [] if news_type == 'economic': news_titles = [('12/5', '作者成為全國(guó)首富。'), ('12/4', '作者成為全省首富。'), ('12/3', '作者成為全市首富。'), ('12/2', '作者成為鎮(zhèn)里首富。'), ('12/1', '作者成為村里首富。')] return render(request, 'news_list.html', {'news_type': news_dict[news_type], 'news_titles': news_titles})

2、模板中添加循環(huán)

示例代碼:

{% extends 'base.html' %}{% block title %}{{ news_type }}新聞{% endblock %}{% block content %} {{ news_type }}新聞列表:
  • {% for date,title in news_titles %}
  • {{ title }}({{ date }}) {% endfor %}
{% endblock %}

注意,模板中的循環(huán)是由“{% for 變量 in 可迭代對(duì)象 %}”和循環(huán)的內(nèi)容以及“{% endfor %}”組成。

當(dāng)我們完成上方代碼之后,訪問(wèn)經(jīng)濟(jì)新聞列表頁(yè)面,就能看到想要的效果了。

三、模板中添加條件判斷

通過(guò)添加循環(huán)的代碼,我們也能夠看出,在模板中添加邏輯代碼其實(shí)非常簡(jiǎn)單,只要了解添加的規(guī)則和能夠使用的功能就可以了。

接下來(lái),我們就嘗試將新聞列表第一項(xiàng)的用紅色字體顯示。

示例代碼:

{% extends 'base.html' %}{% block title %}{{ news_type }}新聞{% endblock %}{% block content %} {{ news_type }}新聞列表:
  • {% for date,title in news_titles %} {% if forloop.first %}
  • {{ title }} ({{ date }}) {% endif %}
  • {{ title }}({{ date }}) {% endfor %}
{% endblock %}

上方代碼中,紅色部分是新增的代碼。

通過(guò)條件判斷,如果是循環(huán)第一項(xiàng)“forloop.first”,將“{{ title }}”的內(nèi)容用“font”標(biāo)簽變?yōu)榧t色字體。

“forloop.first”是循環(huán)的一個(gè)變量,像這樣的變量還有其他幾個(gè)。

在PyCharm中,我們輸入“forloop.”之后,就能夠看到這些變量。

當(dāng)我們寫(xiě)完“if”的語(yǔ)句塊之后,不要忘了在最后添加“{% endif %}”。

不管是“for”還是“if”,在模板中他們都是標(biāo)簽,需要有開(kāi)始標(biāo)簽和結(jié)束標(biāo)簽。

以上是我們對(duì)列表內(nèi)容的一些處理。

不過(guò),有時(shí)列表中沒(méi)有內(nèi)容的話,我們也需要進(jìn)行處理。

在之前的示例中,不管是體育新聞還是經(jīng)濟(jì)新聞,我們都用的同一模板。

體育新聞,我們并沒(méi)有任何列表數(shù)據(jù),這時(shí)需要給用戶一個(gè)提示。

那么,如何判斷數(shù)據(jù)內(nèi)容是空的,并給出相應(yīng)提示呢?

示例代碼:

{% extends 'base.html' %}{% block title %}{{ news_type }}新聞{% endblock %}{% block content %} {{ news_type }}新聞列表:
  • {% for date,title in news_titles %} {% if forloop.first %}
  • {{ title }} ({{ date }}) {% endif %}
  • {{ title }}({{ date }}) {% empty %} 抱歉:暫時(shí)沒(méi)有新聞內(nèi)容! {% endfor %}
{% endblock %}

上方代碼中,紅色代碼是新增部分。

通過(guò)在for循環(huán)中添加“{% empty %}”,就能夠?qū)?shù)據(jù)內(nèi)容為空進(jìn)行判斷,從而給出相應(yīng)提示。

當(dāng)我們完成本篇教程的所有代碼,再次啟動(dòng)開(kāi)發(fā)服務(wù)器,訪問(wèn)經(jīng)濟(jì)新聞列表和體育新聞列表,就能夠看到我們想要的結(jié)果了。

經(jīng)濟(jì)新聞頁(yè)面:

體育新聞頁(yè)面:

總結(jié)

以上是生活随笔為你收集整理的html 列表循环_python web开发:内置标签与过滤器/循环/条件判断的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。