Python开发【Django】:模板语言
排序
1、forloop.counter 表示循环的次数,它从1开始计数,第一次循环设为1
{% for item in todo_list %}
<p>{{ forloop.counter }}: {{ item }}</p>
{% endfor %}
2、forloop.counter0 表示循环的次数,它从0开始计数,第一次循环设为0
{% for item in todo_list %}
<p>{{ forloop.counter0 }}: {{ item }}</p>
{% endfor %}
3、forloop.revcounter 示循环中剩下的items数量,第一次循环时设为items总数,最后一次设为1
{% for item in todo_list %}
<p>{{ forloop.revcounter }}: {{ item }}</p>
{% endfor %}
4、forloop.revcounter0 类似于forloop.revcounter,但它是表示的数量少一个,即最后一次循环时设为0
{% for item in todo_list %}
<p>{{ forloop.revcounter0 }}: {{ item }}</p>
{% endfor %}
5、forloop.first 当第一次循环时值为True,在特别情况下很有用)
{% for object in objects %}
{% if forloop.first %}<li class="first">{% else %}<li>{% endif %}
{{ object }}
</li>
{% endfor %}
6、forloop.last 当最后一次循环时值为True
{% for link in links %}{{ link }}{% if not forloop.last %} | {% endif %}{% endfor %}
7、forloop.parentloop 在嵌套循环中表示父循环的forloop:
{% for country in countries %}
<table>
{% for city in country.city_list %}
<tr>
<td>Country #{{ forloop.parentloop.counter }} </td>
<td>City #{{ forloop.counter }}</td>
<td>{{ city }}</td>
</tr>
{% endfor %}
</table>
{% endfor %}
继承
1、模板继承允许你建立一个基本的”骨架”模板, 它包含你所有最常用的站点元素 并 定义了一些可以被子模板覆盖的block
父模板(master.html):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
<style>
.body-header{
background-color: black;
}
</style>
</head>
<body>
HTML页面:
{# 指定继承的模板 #}
{% extends 'master.html' %}
{# 指定替换的位置 #}
{% block title %}
tp1
{% endblock %}
{# 指定替换的位置 #}
{% block content %}
<p>tp1</p>
{% endblock %}
注:一个html页面只能继承一个父模板,不能继承多个
2、模板导入定制的组件include
组件(tag.html):
form>
<input type="text" name="user"/>
<input type="submit" value="提交"/>
</form>
HTML页面:
{# 指定继承的模板 #}
{% extends 'master.html' %}
{# 指定替换的位置 #}
{% block title %}
tp1
{% endblock %}
{# 指定替换的位置 #}
{% block content %}
<p>tp1</p>
{# 导入单独组件 #}
{% include 'tag.html' %}
{% endblock %}
Simplelistfilter
有时候我们需要在html上对后台渲染的页面进行二次处理,比如把字符串的首字母大写、字符进行计算操作等
1、django默认自带方法
{{ item.event_start|date:"Y-m-d H:i:s"}} #日期格式进行转换
{{ bio|truncatewords:"30" }} #取字符串前30位
{{ my_list|first|upper }} #第一个字符大写
{{ name|lower }} #所有字符小写
2、自定义simple_tag、filter
① 在app中创建templatetags文件夹
② templatetags中创建任意 .py 文件,如:handle.py
from django import template
from django.utils.safestring import mark_safe register = template.Library() @register.simple_tag()
def sub(a1,a2): #能添加多个参数 return a1 + a2 @register.filter()
def lzl(a1,a2): #只能传入两个参数 return a1 + a2
③ 在settings中配置当前app,不然django无法找到自定义的simple_tag
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'cmdb',
)
④ 导入和使用simple_tag、filter
{# 导入py文件名 #}
{% load handle %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>{{ name|lower }}</div>
<div>{{ name|upper }}</div>
{% sub 1 2 %}
{{ 'hello'|lzl:'world'}}
</body>
</html>
{#页面内容#}
{#3 helloworld#}
3、django数据库choice获取字段
device_status_choices = (
(1, '上架'),
(2, '在线'),
(3, '离线'),
(4, '下架'),
)
device_type_id = models.IntegerField('设备类型',choices=device_type_choices, default=1) <td colspan="4">{{ response.data.asset.get_device_status_id_display }}</td>
详细-》》http://www.cnblogs.com/mfryf/archive/2012/07/17/2595019.html
《第二十章》
Python开发【Django】:模板语言的更多相关文章
- django模板语言的注释
就像HTML或者Python,Django模板语言同样提供代码注释. 注释使用 {# #} : ? 1 {# This is a comment #} 注释的内容不会在模板渲染时输出. 用这种语法的注 ...
- 6月15日 python学习总结 Django模板语言相关内容
Django模板语言相关内容 Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...
- Python - Django - 模板语言之变量
前言: 在 Django 模板语言中变量用 {{ }},逻辑用 {% %} 在 urls.py 中添加对应关系 from django.conf.urls import url from django ...
- Django模板语言初识
一.Django框架简介 1.MVC框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...
- Django模板语言相关内容 Djan
Django模板语言相关内容 Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...
- Django——模板语言相关内容
Django模板语言相关内容 Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...
- Django 模板语言 路由 视图
. 模板语言(字符串替换) . 母版和继承 . 什么时候用母版? html页面有重复的代码,把它们提取出来放到一个单独的html文件. (比如:导航条和左侧菜单) . 子页面如何使用母版? {% ex ...
- Django模板语言(常用语法规则)
Django模板语言 The Django template language 模板中常用的语法规则 {最新版本的Django语法可能有改变,不支持的操作可能支持了.[HTML教程 - 基本元素/标签 ...
- django 模板语言之 filter 自定义模板
可以自己写python函数放在模板语言里用 这种方法是django里面的 filter {{ item.event_start|date:"Y-m-d H:i:s"}} {{ bi ...
- Django模板语言与视图(view)
常用语法 {{ }}和{% %} 变量相关的用{{}} , 逻辑相关的用{% %} 变量 在Django的模板语言中按此语法使用:{{ 变量名 }}. 当模版引擎遇到一个变量,它将计算这个变量,然后 ...
随机推荐
- 关于RSSI的问题
1.为什么RSSI是负值,其实归根到底为什么接收的无线信号是负值,这样子是不是容易理解多了.因为无线信号多为mW级别,所以对它进行了极化,转化为dBm而已,不表示信号是负的.1mW就是0dBm,小于1 ...
- JavaScript DOM 第3章 DOM
3.4.5 获取元素 1. getElementById DOM提供了一个名为getElementById的方法,这个方法将返回一个与那个有着给定的id属性值的元素节点对应的对象. 文档中的每个元素都 ...
- .Net中的序列化和反序列化详解
序列化通俗地讲就是将一个对象转换成一个字节流的过程,这样就可以轻松保存在磁盘文件或数据库中.反序列化是序列化的逆过程,就是将一个字节流转换回原来的对象的过程. 然而为什么需要序列化和反序列化这样的机制 ...
- 【matlab】图像去噪的代码测试
%% 自己设置频域的滤波窗口 girl=imread('F:\Users\*****\Pictures\CGS_stripe1.bmp'); girl=rgb2gray(girl); girl=im2 ...
- linux Redhat 6环境上通过源码包安装DRBD 8
环境描述: 操作系统版本:Red Hat Enterprise Linux Server release 6.6 (Santiago) 系统内核版本:2.6.32-504.el6.x86_64 DRB ...
- HLS图像处理系列——肤色检測
本博文採用Xilinx HLS 2014.4工具.实现一个肤色检測的模块.当中,本文重点是构建HLS图像处理函数. 新建HLSproject的步骤,本博文不再详述. 本project新建之后,仅仅加入 ...
- Strut2------配置环境
1.导入必要的包 2.在src目录下新建struts.xml文件 <?xml version="1.0" encoding="UTF-8" ?> & ...
- 【RF库Collections测试】Get From List
Name:Get From ListSource:Collections <test library>Arguments:[ list_ | index ]Returns the valu ...
- HttpPost导包遇到的问题
直接在当前项目 build.gradle文件修改如下 android { useLibrary 'org.apache.http.legacy' compileSdkVersion 24 buildT ...
- ftp服务通信操作
1.将本地虚拟机网卡设置ip--->2.将虚拟机系统的网卡ip设置--->3.虚拟机设置特定网络模式vm8nat模式: (1) (2) (3) 保证正常互ping 通信, 4.在虚拟机系统 ...