Django之template

来源:https://www.cnblogs.com/hantaozi430/archive/2018/01/27/8350523.html
-Advertisement-
Play Games

一.介紹 在HTML的基礎上加上模板語言(包括:會被替換掉的變數和標簽) 二.模板語法之變數( {{ }} ) 2.1 基本用法 views: template: 2.2 過濾器 語法: 三.模板語法之標簽( {% %} ) 3.1 標簽操作 3.2 模板繼承 模版繼承可以讓您創建一個基本的“骨架” ...


一.介紹

在HTML的基礎上加上模板語言(包括:會被替換掉的變數和標簽)

二.模板語法之變數( {{ }} )

2.1 基本用法

 views:

def index(request):
    import datetime
    s="hello"
    l=[111,222,333]    # 列表
    dic={"name":"yuan","age":18}  # 字典
    date = datetime.date(1993, 5, 2)   # 日期對象
 
    class Person(object):
        def __init__(self,name):
            self.name=name
 
    person_yuan=Person("yuan")  # 自定義類對象
    person_egon=Person("egon")
    person_alex=Person("alex")
 
    person_list=[person_yuan,person_egon,person_alex]
 
 
    return render(request,"index.html",{"l":l,"dic":dic,"date":date,"person_list":person_list})

template:

<h4>{{s}}</h4>

#通過'.'引用
<h4>列表:{{ l.0 }}</h4>
<h4>列表:{{ l.2 }}</h4>
<h4>字典:{{ dic.name }}</h4>
<h4>日期:{{ date.year }}</h4>
<h4>類對象列表:{{ person_list.0.name }}</h4>

#通過'.'引用對象的方法
<h4>字典:{{ dic.name.upper }}</h4>

2.2 過濾器

 語法:

{{ 變數|過濾器:參數 }}
#加法
{{ i|add:5}}

#如果一個變數是false或者為空,使用給定的預設值。否則,使用變數的值
{{ value|default:"nothing" }}

#返回值的長度。它對字元串和列表都起作用
{{ value|length }}

#將值格式化為一個 “人類可讀的” 文件尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)
{{ value|filesizeformat }}

#如果 value=datetime.datetime.now()
{{ value|date:"Y-m-d" }}

#切片
{{ value|slice:"2:-1" }}

#截斷字元串。截斷的字元串將以可翻譯的省略號序列(“...”)結尾。
{{ value|truncatechars:9 }}

#截斷word。截斷的word將以可翻譯的省略號序列(“...”)結尾
{{ value|truncatewords:2 }}

'''
Django的模板中會對HTML標簽和JS等語法標簽進行自動轉義,原因顯而易見,這樣是為了安全。但是有的時候我們可能不希望這些HTML元素被轉義,比如我們做一個內容管理系統,後臺添加的文章中是經過修飾的,這些修飾可能是通過一個類似於FCKeditor編輯加註了HTML修飾符的文本,如果自動轉義的話顯示的就是保護HTML標簽的源文件。為了在Django中關閉HTML的自動轉義有兩種方式,如果是一個單獨的變數我們可以通過過濾器“|safe”的方式告訴Django這段代碼是安全的不必轉義。
'''
value="<a href="">點擊</a>"

{{ value|safe}}

三.模板語法之標簽( {% %} )

3.1 標簽操作

#for迴圈
{% for person in person_list %}
    <p>{{ person.name }}</p>
{% endfor %}

{% for key,val in dic.items %}
    <p>{{ key }}:{{ val }}</p>
{% endfor %}
#for...empty
{% for person in person_list %}
    <p>{{ person.name }}</p>
{% empty %}
    <p>sorry,no person here</p>
{% endfor %}
#if
{% if num > 100 or num < 0 %}
    <p>無效</p>
{% elif num > 80 and num < 100 %}
    <p>優秀</p>
{% else %}
    <p>湊活吧</p>
{% endif %}
#url
{{% url ... %}}

3.2 模板繼承

模版繼承可以讓您創建一個基本的“骨架”模版,它包含您站點中的全部元素,並且可以定義能夠被子模版覆蓋的 blocks 。

先建立一個母板

<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="stylesheet" href="style.css" />
    <title>{% block title %}My amazing site{%/span> endblock %}</title>
</head>

<body>
    <div id="sidebar">
        {% block sidebar %}
        <ul>
            <li><a href="/">Home</a></li>
            <li><a href="/blog/">Blog</a></li>
        </ul>
        {% endblock %}
    </div>

    <div id="content">
        {% block content %}{% endblock %}
    </div>
</body>
</html>

利用母板的html:

{% extends "base.html" %}
 
{% block title %}My amazing blog{% endblock %}
 
{% block content %}
{% for entry in blog_entries %}
    <h2>{{ entry.title }}</h2>
    <p>{{ entry.body }}</p>
{% endfor %}
{% endblock %}

 


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

-Advertisement-
Play Games
更多相關文章
  • function num(obj){ obj.value = obj.value.replace(/[^\d.]/g,""); //清除"數字"和"."以外的字元 obj.value = obj.value.replace(/^\./g,""); //驗證第一個字元是數字 obj.value = o ...
  • 數組方法是否為數組Array.isArray(param)如果param是 Array,則為true; 否則為false。數組轉字元串joinjoin(separator)以separator為分隔符,省略的話則用預設用逗號為分隔符可以實現重覆字元串,實質是在n+1個空字元串之間加入要重覆 ...
  • 本文最初發表於 "博客園" ,併在 "GitHub" 上持續更新 前端的系列文章 。歡迎在GitHub上關註我,一起入門和進階前端。 以下是正文。 數組的定義 之前學習的數據類型,只能存儲一個值(字元串為一個值)。如果我們想存儲多個值,就可以使用數組。 數組的定義 (1)字面量定義。舉例: (2)對 ...
  • 1. 問題 當使用tab切換時,部分特殊場景需要獲取當前元素的類名或者id。 2.解決思路,tab切換是綁定函數,函數會傳遞過去當前對象,通過當前對象獲取對象屬性 vue部分代碼:本項目是在vue-cli下運行,因此vue的初始化函數略有差異。 ...
  • 到了年底,開發任務相對較少,閑來看了幾篇優秀的代碼優化文章,現在分享出來,記錄一下,以便以後再次重讀 1.反覆推敲代碼 2.寫優雅的代碼 3.寫模塊化的代碼 4.寫可讀的代碼 5.寫簡單的代碼 6.寫直觀的代碼 7.寫無懈可擊的代碼 8.正確處理錯誤 總結: 世界上有兩種“沒有bug”的代碼。一種是 ...
  • win10系統配置虛擬主機1.用記事本或Sublime Text打開httpd.confctrl + f 搜索httpd-vhosts.conf 將#Include conf/extra/httpd-vhosts.conf的#號去掉保存 2.打開extra/httpd-vhosts.conf添加如下 ...
  • Relatives Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15566 Accepted: 7900 Description Given n, a positive integer, how many positive i ...
  • 一.路由配置系統 1.1 基本認識 a. URL配置(URLconf)就像Django 所支撐網站的目錄。它的本質是URL與要為該URL調用的視圖函數之間的映射表 b. URLconf 在請求的URL 上查找,將它當做一個普通的Python 字元串。不包括GET和POST參數以及功能變數名稱。 例如,htt ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...