溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

django-模板

發(fā)布時間:2020-07-11 14:52:47 來源:網絡 閱讀:515 作者:lixiaobo994 欄目:開發(fā)技術

模板

作為Web 框架,Django 需要一種很便利的方法以動態(tài)地生成HTML。最常見的做法是使用模板。模板包含所需HTML輸出的靜態(tài)部分,以及一些特殊的語法,描述如何將動態(tài)內容插入。

變量

        用{{}}包圍的是變量,如`person_name`,

過濾器

可以通過使用 過濾器來改變變量的顯示。

        {{ship_date|date:"F j, Y"}}把ship_date變量傳遞給過濾器,并給date過濾器傳遞了一個參數(shù)“F j, Y”,date過濾器以給定參數(shù)的形式格式化日期

default

如果一個變量是false或者為空,使用給定的默認值。否則,使用變量的值。例如:

{{ value|default:"nothing" }}

如果 value沒有被提供,或者為空, 上面的例子將顯示“nothing”。

length

返回值的長度。它對字符串和列表都起作用。例如:

{{ value|length }}

filesizeformat

將該數(shù)值格式化為一個 “人類可讀的” 文件容量大小 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)。例如:

{{ value|filesizeformat }}  

標簽

用{% %}包圍的是塊標簽,如{%if ordered_warranty%}

for

循環(huán)數(shù)組中的每個元素。例如,顯示 athlete_list中提供的運動員列表:

<ul>

{% for athlete in athlete_list %}

<li>` athlete`.`name `</li>

{% endfor %}

</ul>

if, elif, and else

計算一個變量,并且當變量是“true”是,顯示塊中的內容:

{% if athlete_list %}

Number of athletes: {{ athlete_list|length }}

{% elif athlete_in_locker_room_list %}

Athletes should be out of the locker room soon!

{% else %}

No athletes.

{% endif %}

自定義標簽和過濾器

代碼布局

在app下創(chuàng)建一個templatetags包,然后再里面創(chuàng)建相應的python處理代碼

在模板中{% load 自定義處理模塊名 %}加載

自定義標簽處理代碼

from django import template

register = template.Library()

@register.simple_tag

def current_time(format_string):

return datetime.datetime.now().strftime(format_string)

html中

{% current_time '%Y-%m-%d %X' %}


模板繼承

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

        母板:

<!DOCTYPE html>

<html lang="en">

<head>

<link rel="stylesheet" href="style.css" />

<title>{% block title %}My amazing site{% 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骨架?!白幽0妗钡墓ぷ魇怯盟鼈兊膬热萏畛淇盏腷locks。

在這個例子中, block 標簽定義了三個可以被子模版內容填充的block。 block 告訴模版引擎: 子模版可能會覆蓋掉模版中的這些位置。


        子板:

extends標簽是這里的關鍵。它告訴模版引擎,這個模版“繼承”了另一個模版。當模版系統(tǒng)處理這個模版時,首先,它將定位父模版——在此例中,模版引擎將注意到 base.html 中的三個 block 標簽,并用子模版中的內容來替換這些block

{% extends "base.html" %}

{% block title %}My amazing blog{% endblock %}

{% block content %}

{% for entry in blog_entries %}

<h3>` entry`.`title `</h3>

<p>` entry`.`body `</p>

{% endfor %}

{% endblock %}

        


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI