Django學習(三) 之 模板中標簽的使用

来源:https://www.cnblogs.com/longronglang/archive/2023/12/12/17897872.html
-Advertisement-
Play Games

寫在前面 最近看到稀土掘金在搞2023年終總結徵文活動,一直想嘗試投稿試試,周末我就花了近一下午時間寫完初稿,然後周一、周二完成精讀再改稿,感覺OK,昨晚凌晨第一時間在稀土掘金投稿。 結果,又發生了同樣的事情。 同樣的文章,在博客園上、公號上閱讀量很OK,在稀土掘金上就上不來。 這應該是我博客園第四 ...


寫在前面

最近看到稀土掘金在搞2023年終總結徵文活動,一直想嘗試投稿試試,周末我就花了近一下午時間寫完初稿,然後周一、周二完成精讀再改稿,感覺OK,昨晚凌晨第一時間在稀土掘金投稿。

結果,又發生了同樣的事情。

同樣的文章,在博客園上、公號上閱讀量很OK,在稀土掘金上就上不來。

這應該是我博客園第四次上榜一了把,也是是第二次找到運營大大了,我都有點不好意思了,我好不容易鼓起勇氣想投個稿,結果尷尬,不過後來運營大大也幫忙上推薦了,但是值得一說的是嗎,這個掘金閱讀量上不來,是我寫的不行嗎?回頭我好好總結下,做個復盤。

先不想了,還是接著更文吧。

模板中標簽的使用

DjangoMVC思想,模板是一個文本,用於分離文檔的表現形式和內容,而不是將數據與視圖混合在一起
先創建靜態文件,在mycontent/templates/下創建template_demo.html,暫時先不修改如內容,在django_project/settings.py,修改為如下代碼:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR+"/mycontent/templates",],   # 預設為[]
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

1、模板標簽變數的使用

template_demo.html添加如下代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>TEMPLATE_DEMO</title>
</head>
<body>
 <p>variables_demo: {{ name }}</p>
</body>
</html>

mycontent/views.py中添加代碼如下:

def variables_demo(request):
    name = 'variables_demo'
    return render(request, 'template_demo.html', {'name': name})

django_project/urls.py中添加代碼如下:

urlpatterns = [
    path("index/", views.index),
    re_path('^$', views.index),
    url('^$', views.index),
    url('^my_content/$', views.my_content),
    url('^my_content/page=(\d+)$', views.pagehelper),
    url('variables_demo/', views.variables_demo)
]

效果如下:

2、模板標簽列表的使用

template_demo.html添加如下代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>TEMPLATE_DEMO</title>
</head>
<body>
 <p>variables_demo: {{ name }}</p>
 <p>list_demo: {{ list }}</p>
</body>
</html>

mycontent/views.py中添加代碼如下:

def list_demo(request):
    list = ['list1','list2','list3']
    return render(request, 'template_demo.html', {'list': list})

django_project/urls.py中添加代碼如下:

urlpatterns = [
    path("index/", views.index),
    re_path('^$', views.index),
    url('^$', views.index),
    url('^my_content/$', views.my_content),
    url('^my_content/page=(\d+)$', views.pagehelper),
    url('variables_demo/', views.variables_demo),
    url('list_demo/', views.list_demo)
]

效果如下:

3、模板標簽字典的使用

template_demo.html添加如下代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>TEMPLATE_DEMO</title>
</head>
<body>
 <p>variables_demo: {{ name }}</p>
 <p>list_demo: {{ list }}</p>
 <p>dict_demo: {{ dict }}</p>
</body>
</html>

mycontent/views.py中添加代碼如下:

def dict_demo(request):
    dict_demo = {'dict': 'dict_demo'}
    return render(request, 'template_demo.html', {'dict': dict_demo})

django_project/urls.py中添加代碼如下:

urlpatterns = [
    path("index/", views.index),
    re_path('^$', views.index),
    url('^$', views.index),
    url('^my_content/$', views.my_content),
    url('^my_content/page=(\d+)$', views.pagehelper),
    url('variables_demo/', views.variables_demo),
    url('list_demo/', views.list_demo),
    url('dict_demo/', views.dict_demo),
]

效果如下:

知識點:

變數模板語法:

  • view:{"HTML變數名" : "views變數名"}
  • HTML:{{變數名}}

4、模板的一些特殊慄子

template_demo.html添加如下代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>TEMPLATE_DEMO</title>
</head>
<body>
 <p>variables_demo: {{ name|safe }}</p>
<!-- 過濾器部分例子-->
 <p>過濾器部分例子: {{ name|upper }}</p>
<!-- length例子-->
  <p>length例子: {{ name|length }}</p>
 <!-- 截斷的字元串將以 ... 結尾。-->
 <p>截斷的字元串將以 ... 結尾: {{ name|truncatechars:2}}</p>
 <p>list_demo: {{ list }}</p>
 <p>list_demo: {{ list|first|upper }}</p>
 <p>dict_demo: {{ dict }}</p>


</body>
</html>

mycontent/views.py中添加代碼如下:

def variables_demo(request):
    name = '<script>alert("safe test!")</script>'
    return render(request, 'template_demo.html', {'name': name})

效果如下:

知識點:

{{ views_str|safe }}:將字元串標記為安全,不需要轉義,要保證 views.py 傳過來的數據絕對安全,才能用 safe

5、if/else、for標簽、遍歷字典的使用

if/else標簽:

基本語法格式如下:

{% if condition %}
     ... display
{% endif %}
# 或者:

{% if condition1 %}
   ... display 1
{% elif condition2 %}
   ... display 2
{% else %}
   ... display 3
{% endif %}

根據條件判斷是否輸出。if/else 支持嵌套。

{% if %} 標簽接受 and or或者 not 關鍵字來對多個變數做判斷 ,或者對變數取反( not ),例如:

{% if athlete_list and coach_list %}
     athletes 和 coaches 變數都是可用的。
{% endif %}

for 標簽使用
基本語法格式如下:

{% for athlete in athlete_list %}
    {{ athlete.name }}
{% endfor %}

示例:

<ul>
{% for athlete in athlete_list %}
    <li>{{ athlete.name }}</li>
{% endfor %}
</ul>

遍歷字典的使用

{% for i,j in views_dict.items %}
{{ i }}---{{ j }}
{% endfor %}

效果如下:

image.png

6、註釋標簽

Django 註釋使用 {# #}。

{# 這是一個註釋 #}

寫在最後

感覺有點像Java中的httljsp都有點像呢,馬上熟悉感就來了,作為一個Java黨,這突然而來的熟悉感,真的好親戚,哈哈!

優秀不夠,你是否無可替代

軟體測試交流QQ群:721256703,期待你的加入!!

歡迎關註我的微信公眾號:軟體測試君



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 Echarts繪製氣泡圖 氣泡圖是一種用於可視化三維數據的圖表類型,其中兩個變數用於確定數據點在平面上的位置,另一個變數用於確定氣泡的大小。Echarts是一款基於JavaScript的數據可視化庫,它提供了豐富的圖表類型,包括靈活多變的 ...
  • 人在身處逆境時,適應環境的能力實在驚人。人可以忍受不幸,也可以戰勝不幸,因為人有著驚人的潛力,只要立志發揮它,就一定能渡過難關。 Hooks 是 React 16.8 的新增特性。它可以讓你在不編寫 class 組件的情況下使用 state 以及其他的 React 特性。 React Hooks 表 ...
  • 本文並不是介紹如何將一個網頁配置成離線應用並支持安裝下載的。研究PWA的目的僅僅是為了保證用戶的資源可以直接從本地載入,來忽略全國或者全球網路質量對頁面載入速度造成影響。當然,如果頁面上所需的資源,除了資源文件外並不需要任何的網路請求,那它除了不支持**安裝到桌面**,已經算是一個離線應用了。 ...
  • static:靜態定位(預設)。依據文檔流定位。 relative:相對定位。以自身為基準,設置坐標(left、top、right、bottom),不脫離文檔流。 absolute:絕對定位。以父元素為基準,設置坐標(left、top、right、bottom),脫離文檔流。 fixed:固定定位。... ...
  • 介紹 在使用nest創建項目時,預設使用webpack進行打包,有時候啟動項目需要1-2分鐘。所以希望採用vite進行快速啟動項目進行開發。 本文主要使用NestJs、Vite和swc進行配置。文章實操較多,概念性的東西可訪問對應的官方文檔進行瞭解。tips: 個人認為概念性的東西,在文章中指出。對 ...
  • 面向對象編程是一種強大而靈活的編程範式,它可以幫助我們更好地組織和管理代碼,提高代碼的可讀性和可維護性,這使得它特別適合用在大型工程項目中。然而,我們也需要註意其可能帶來的問題,尤其是在併發和複雜系統中。 ...
  • 背景及問題: 在與硬體打交道時,經常需要知道當前設備連接的硬體信息,以便連接正確的硬體,比如串口通訊查詢連接的硬體及埠,一般手工的方式就是去設備管理器查看相應的信息,應用程式如何讀取這一部分信息呢,Windows下的SetupAPI系列就可以解決這個問題 示常式序 #include<Windows ...
  • C 語言中的函數聲明和定義 您可以通過以下方式創建並調用函數: // 創建一個函數 void myFunction() { printf("我剛被執行了!"); } int main() { myFunction(); // 調用函數 return 0; } 一個函數包括兩個部分: 聲明:函數名稱、 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...