前端篇—模板语⾔⽂章⽬录
前⾔
模板语⾔:html + 逻辑控制语句
松仁的营养价值Django模板基本语法
# bash
python manage.py shell # 进⼊django命令⾏
# django
plate import Context, Template
t = Template('Welcome {{ name }}!')# html模板
c = Context({'name':'wolf'})# 设置渲染对象
# --> Welcome wolf!
1. {{ 变量 }}
2. 万能的句点 .
render传过来的对象,字典,类,列表的属性都可以直接使⽤
3. {% 语句 %}
判断
{% if True %}# if 后只能跟布尔值,
#
{% elif %}
#
{% el %}
#
{% endif %}
循环
{% for i in obj %}# 遍历django中rander传过来的可遍历对象
#
{% endfor %}
# i 为值
# 获取索引
{{ unter }}# 索引从1开始
{{ unter0 }}# 从0开始索引
{{ vcounter }}# 索引从⾼到低,值正常的从低到⾼
4. 管道符 |(filter)
{{ obj|upper }}# 对obj中的值都使⽤upper⽅法
{{ obj|lower }}
{{ obj|first|upper }}# 去除第⼀个字母,再⼤写
{{ obj|capfirst }}# ⾸字母⼤写
{{ obj|add:5 }}# 加5
{{ obj|cut:' '}}# 删除字符中的空格
{{ obj|date:'Y-m-d'}}
{{ obj|default:'空的'}}# 数据为空时,以默认的‘空的’代替
5. 特殊
# 告诉浏览器语句是安全的,浏览器会将传过来的字符串中的html渲染
{% autoescape off %}
#
{% endautoescape %}
{{ var|safe }}# 跟上⾯的作⽤⼀样
{{ var|slice:':-2'}}# 切⽚
{{ var|filesizeformat }}# ⼤⼩
{{ var|length }}# 长度
{{ var|urlencode }}
{{ var|truncatechars:'6'}}# 截取6个字符
{{ var|truncatewords:'6'}}# 截取6个单词
香肠饭<form>
<input>
{% csrf_token %}# 解决forbidden错误,如果⽤render_to_respon()须要另外加⼀个参数</form>
技穷黔驴
<form action={% url %}># 别名(alias)
{% load temp_name %}# 加载标签库,加载⾃定义模板
{% with total=sadasdasfqwdad %}{{ total }}{% endwith %}
# ⽤简单的变量名代替复杂的变量名
{% verbatim %}# 禁⽌render
{{ asjdi }}# 直接输出{{ asjdl }}
{% endverbatim %}
⾃定义模板templatetags
在app⽂件夹下添加⽂件夹templatetags文昌鸡饭
在这个⽂件夹下写⾃定义模板
1. ⽅法,可以传个参数,但不能放在if下作为条件
# FILE:/templatetags/my_tags.py
from django import template
from django.utils.safestring import mark_safe
register = template.Library()
# 创建⾃定义模板
@register.simple_tag
def my_add(s):
return s+100
{% load my_tags %} // 加载⾃定义模板
<html>
<p>
{% my_add 100 %} <!--浏览器输出200-->
share的用法</p>
⽤tag⽅法:
浏览器输出:
2. filter
@register.filter# 引⼊跟第⼀种⽅法⼀样,只需要将simple_tag改成filter def my_add_2(s):
return s+100
使⽤filter⽅法:
导⼊⼀个变量num=3:
浏览器输出:
传⼊参数,最多传⼊2个参数:
@register.filter# 引⼊跟第⼀种⽅法⼀样,只需要将simple_tag改成filter def my_add_2(s, s2):
return s+100+s2
{{ num|my_add_2:12 }}
HTML模板
1. 创建模板
<!-- FILE:ba.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta chart="UTF-8">
<title>Title</title>
</head>
<body>
{% block content %}
好喜欢一时半会手指点画图片{% endblock %}
</body>
</html>
2. 使⽤模板
{% extends 'ba.html' %} <!--必须放在最前⾯-->
{% block content %}
<div></div><!--这⾥的html部分会代替到模板的block区--> {% endblock %
3. 使⽤模板中本来有的html,继承
{% extends 'ba.html' %} <!--必须放在最前⾯-->
{% block content %}
教师年度考核
{% block:super %} <!--继承原来block中的html-->
<div></div><!--这⾥的html部分会代替到模板的block区--> {% endblock %