django-模板

发布时间:2020-07-11 14:52:47 作者:lixiaobo994
来源:网络 阅读:517

模板

作为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 %}

        


推荐阅读:
  1. Laravel 模板 Blade模板学习笔记
  2. django-关于JSON编码格式的异常处理

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

过滤器 nothing default

上一篇:NTP时钟服务器竟然还有这功能

下一篇:解决mysql服务启动失败的方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》