标签:mlu win gic gis back asn 行操作 ati eve
t = Template(‘My name is {{ name }}.‘)
c = Context({‘name‘: ‘sfencs‘})
print(t.render(c))
在视图函数中:
def login(req):
return render(req,"test.html",{"name":"sfencs"})
在html中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ name }}
</body>
</html>
这样在浏览器中渲染出的就是sfencs,即把{{ name }}替换成了views函数传递的字典对应的值。
如上节所写,{{ }}中放入的就是变量
可是有时候我们传给模板的并不一定只是一个字符串,有可能是一个字典,一个列表,那怎样在模板中对它们进行操作呢?
方法是使用”.”句点号
filter就相当于是对模板中变量执行的方法,使用方法是{{obj|filter:param}}
介绍几个简单的pyth内置的过滤器
具体其他的内置过滤器可以参考https://blog.csdn.net/foryouslgme/article/details/52057445
这里过滤器后边只能跟一个参数。
{% if age == 3 %}
<p>等于3</p>
{% elif age > 3 %}
<p>大于3</p>
{%else %}
<p>小于3</p>
{% endif %}
注意age与符号之间有空格
if标签中可以使用and,or,但不能同时使用and和or
{% for i in people %}
<h1>{{ people.name }}</h1>
<ul>
{% for j in i.hobby %}
<li>{{ j }}</li>
{% endfor %}
</ul>
{% endfor %}
for标签中自带了一个forloop变量可以提供有关循环的信息
{% empty %}表示如果循环项为空则执行的部分
{% for obj in list reversed %}表示反序循环
在表单最后加上{%csrf_token%},用于防治跨站攻击验证
用更简单的变量名替代复杂的变量名
{% with simple=complex %}
{{simple }}
{% endwith %}
不适用render传来的content
{% verbatim %}
{{ age }}
{% endverbatim %}
页面显示的是
{{ age }}
from django import template
register = template.Library()
使用相应的装饰器
@register.filter
def filter_mult(v1,v2):
return v1 * v2
@register.simple_tag
def simple_tag_multi(v1,v2):
return v1 * v2
{% load my_tags %}
{{ age|filter_mult:2 }}
{% simple_tag_mult age 3 %}
模板继承可以解决html代码重复的问题,比如两个页面的大体结构类似,只有小部分的内容不同,如果写到两个不同的html中就会有相当多的代码重复,这个时候将相同部分的html写到一个html中,不同的部分用模板表示,再用一个新的html继承它,并将模板的部分代替。
{% block content %}
{% endblock %}
这里block可以起不同的名称,用于不同的代码块的替换
首先要在文档开头添加{% extends “base.html” %},表示要继承的html
然后按照block名称相应的写入要代替的内容
{% block title %}
{{age}}
{% endblock %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% block title %}
{% endblock %}
</body>
</html>
{% extends "base.html" %}
{% block title %}
{{age}}
{% endblock %}
标签:mlu win gic gis back asn 行操作 ati eve
原文地址:https://www.cnblogs.com/sfencs-hcy/p/9903719.html