您好,登錄后才能下訂單哦!
模板
作為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 %}
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。