django-模板

模板

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

變量

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

過濾器

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

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

default

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

{{ value|default:"nothing" }}

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

length

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

{{ value|length }}

filesizeformat

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

{{ value|filesizeformat }}  

標籤

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

for

循環數組中的每個元素。例如,顯示 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下創建一個templatetags包,然後再裏面創建相應的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' %}


模板繼承

模版繼承可以讓您創建一個基本的“骨架”模版,它包含您站點中的全部元素,並且可以定義能夠被子模版覆蓋的 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骨架。“子模版”的工作是用它們的內容填充空的blocks。

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


        子板:

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

{% 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 %}

        


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章