django|django 实战篇之模板层
模板层 ? {{}} 变量相关
? {%%} 逻辑相关 ?
前端获取容器类型的数据统一使用 句点符(.) ?
两种给模板传递值的方式return render(request,'index.html',{'name':'jason','age':'18'})
return render(request, 'index.html', locals()) # 这个方法虽然好用,但是会把后端函数所有的变量传给前端
文章图片
过滤器 ?
取消转义(**): ? 前端: ? |safe 取消转义 ?
后端: ? from django.utils.safestring import mark_safe ?
ss1 = mark_safe("我是h1")
文章图片
标签 {% for foo in l %}
{{ foo }}
{% endfor %}
{% if l %}
这个l有值
{% else %}
这个l没有值
{% endif %}
{% for foo in l %}
{% if forloop.first %}
这是我的第一次
{% elif forloop.last %}
最后一次了啊,不能再来了
{% else %}
继续嗨!
{% endif %}
{% empty %}
你给我的这个l是个空的,我没办法for循环
{% endfor %}
{% with d.hobby.2 as h %}
? {{ h }} # 重命名的变量只能在with里面使用 ?
{# {{ d.hobby.2 }}#} ?
{% endwith %} ?
文章图片
文章图片
文章图片
自定义过滤器
必须做下面三件事:
1.必须在应用下新建一个名为templatetags的文件夹
2.在该文件夹下创建一个任意名的py文件
3.在该文件内必须先写下面两句话
from django import template
resgiter = tmplate.Library()
文章图片
文章图片
# 自定义过滤器
@register.filter(name='baby')
def my_sum(a,b):
return a+b
使用:
必须先加载过来
{% load my_tag %}
之后的用法跟自带的过滤器用法相同
{{ xx|baby:10 }}
自定义inclusion_tag ? 调用自定义的inclusion_tag能够返回一段html代码
@register.inclusion_tag('login.html')
? def get_html(n): ? l = [] ?
for i in range(n): ?
l.append('第%s项'%i) ?
return {'l':l}
文章图片
文章图片
login.html 中文件
- {{ foo }}
{% for foo in l %}
{% endfor %}
最后在index.HTML中执行下面的方法
{% get_html 5 %}
得到五条记录
第0项
第1项
第2项
第3项
第4项
![django|django 实战篇之模板层](https://img.it610.com/image/info8/915bbf7935bd4ad88456d5a0bbf03444.jpg)
文章图片
![django|django 实战篇之模板层](https://img.it610.com/image/info8/1e08fac64f544be3927cb1faad7f2e9f.jpg)
文章图片
![django|django 实战篇之模板层](https://img.it610.com/image/info8/40b26c58cdc7482a80dfdbb399ab5671.jpg)
文章图片
自定义标签 过滤器 inclusion_tag都是为了能够调用它返回相应的结果
区别:
自定义标签和过滤器返回的仅仅是数据而已
而我的inclusion_tag返回的是一段html代码而已!!!
模板的继承与导入 ? 模板的继承: ?
需要在你的主页面通过block划定多片区域,给继承了主页面的子页面选择使用哪块区域
?子页面中如何使用:{% extends 'home.html' %} # 先将主页面继承过来通过block块的名字,指定修改哪一片区域{% block '区域名字' %}
{% endblock %}
{% block content %} ? 登录页面 ? {{ block.super }} ?
? {% endblock %}
在模板中指定一片区域命名为content ?
还可以通过{{ block.super }}继续使用主页面某一个块里面的内容
? 模板里面定义的块儿越多,可扩展性越高 ?通常情况下模板都有三块区域
{% block css %}
{% endblock %}
{% block content %} ?
{% endblock %}
{% block js %}
{% endblock %}
模板的导入的应用场景
? 你花了好长时间搭建了一个特别好看的form表单(某一个区域) ?
使用方式: ? {% include 'demo.html' %} 相当于一个模块 可以导入
【django|django 实战篇之模板层】转载于:https://www.cnblogs.com/tangda/p/10719703.html
推荐阅读
- django-前后端交互
- 《机器学习实战》高清中文版PDF英文版PDF+源代码下载
- --木木--|--木木-- 第二课作业#翼丰会(每日一淘6+1实战裂变被动引流# 6+1模式)
- 2020-07-29《吴军·阅读与写作50讲》24实战才能转化效能
- Python实战计划学习笔记(9)为大规模爬取准备
- django2.2|django2.2 一般项目步骤(初步)
- 韵达基于云原生的业务中台建设 | 实战派
- 【V课会】第3季-30天小学思维导图实战营
- 【思维导图实战派】刻意练习计划“遇见……”|【思维导图实战派】刻意练习计划“遇见……” 1/300 人教版数学五下第三单元《正方体和长方体的认识》
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例