您好,登录后才能下订单哦!
模板
作为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 %}
<h3>` entry`.`title `</h3>
<p>` entry`.`body `</p>
{% endfor %}
{% endblock %}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。