上一篇:Django之view视图处理【交互篇二】点击跳转
目录篇:Django之前后端交互篇目录 点击跳转
下一篇:Django之CSRF XSS原理解析【交互篇四】点击跳转
目录
简单理解:来说就是后端把html里面的特殊符号{{ }}内容替换成我们给的内容,又或者你可以理解成后端给一个变量给前端使用
更深入了解跳转:web框架的本质(socket,WSGI)https://blog.csdn.net/Burgess_zheng/article/details/86496202
def tem_render(request):
current_user = 'Burgess'
user_dict = {'k1': 'v1', 'k2': 'v2', }
user_list = ['xiaoming', 'xiaohong']
age = 18
return render(request, "render.html", {'current_user': current_user,
"age": age,
'user_list': user_list,
'user_dict': user_dict,
})
Title
--------------------字符串-------------------
{{ current_user }}
{{ current_user.0 }}
--------------------列表-------------------
{{ user_list.0 }}
{{ user_list.1 }}
{% for row in user_list %}
- {{ row }}
- {{ row.0 }}
- {{ row.1 }}
{% endfor %}
--------------------字典-------------------
{{ user_dict.k1}}
{{ user_dict.k2}}
{% for row in user_dict %}
- {{ row }}
{% endfor %}
{% for row in user_dict.keys %}
- {{ row }}
{% endfor %}
{% for row in user_dict.values %}
- {{ row }}
{% endfor %}
{% for row in user_dict.items %}
- {{ row }}
{% endfor %}
{% for k,row in user_dict.items %}
- {{ k }}---{{ row }}
{% endfor %}
--------------------if判断-------------------
{% if age %}
有年龄
{% if age > 16 %}
老男人
{% else %}
小鲜肉
{% endif %}
{% else %}
无年龄
{% endif %}
--------------------IF嵌套到FOR循环里面-------------------
{% for row in user_list %}
{% if row == "xiaoming" %}
- {{ row }}
{% endif %}
{% endfor %}
--------------------forloop参数-------------------
{% for row in user_list %}
{{ forloop.counter }}
{% endfor %}
通过模板HTML语言进行数据类型取值都是通过点
v=obj(id,name,....)
#对象取值方式:通过点如:v1.id
v={'id':1,'caption':'运维部'}
#字典取值方式:Python:v ["key"]、
#模板渲染通过点如:v.id
v= (1,2)
#元组取值方式:Python: v[下标]
#模板渲染:v.下标
v=[1,2]
#列表取值方式:Python:v[下标]
模板渲染:v.下
实战Django之继承母版(extends, include): https://blog.csdn.net/Burgess_zheng/article/details/86548311
继承全局母版
场景:多个模板的格式和部分标签相同的时候,继承相同的部分,不同的部分根据母版的block块进行替换内容母版(在不通用的位置进行block,这样继承人可以自定制内容,继承者只能继承1次):
master.html
{% block title %} {% endblock %} {% block css %} {% endblock %}Bugess{% block content %} {% endblock %} {% block js %} {% endblock %}继承者(拥有母版的所有标签,且根据对应block位置插入自定制内容):
successor.html
{% extends 'master.html' %} {% block title %} {% endblock %} {% block conent %} {% endblock %} {% block css %} {% endblock %} {% block js %} {% endblock %}
需注意:
1.母版的固定代码,如果被修改,那么所有的继承模板都会修改到
2.css和js还是要注意,一定要在母版的head 和body最下面专门弄个块,这样继承模板才可以写自身的css 和js
导入局部母版
场景:标签重复被调用的时候,或者该标签代码多(为了页面的整洁)进而导入局部内容标签(允许被导入多次)
tag.html
xx
导入者(导入指定的文件以后,该文件的内容进入插入到include位置)
Title {% include 'tag.html' %}
实战django之simple_tag and filter: https://blog.csdn.net/Burgess_zheng/article/details/86548240
简单理解:HTML调用Python写的函数
系统自带simple.tag
自定制simple.tag
1.在某个app下创建一个templatetags目录(目录名不能更改其他的
2. templatetags目录下创建任意py文件(py文件名没限制)
3.py文件需要导入指定模块实例化一个template对象 (名字必须为:register = template.Library())
4.该对象调取继承类的simple_tag方法对自定义函数进行装饰 【装饰器:@register.simple_tag or @register.filter(有要求,参数固定最多2个)】
5. 注册 templatetags目录所在的app
6.模板文件调用
1.顶部导入自定义函数文件格式:{% load 要调取的函数所在文件名 %}
2.simple_tag调取函数格式: simple_tag{% 函数名 ”实参” ”实参” %} fiter: {{”实参”|函数名:”实参”}}
上一篇:Django之view视图处理【交互篇二】点击跳转
目录篇:Django之前后端交互篇目录 点击跳转
下一篇:Django之CSRF XSS原理解析【交互篇四】点击跳转