博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django 模板层
阅读量:6542 次
发布时间:2019-06-24

本文共 4199 字,大约阅读时间需要 13 分钟。

Django模板层

  • 一、前后端数据传递
  • 二、过滤器
  • 三、标签
  • 四、模板的继承与导入
  • 五、静态文件配置

一、前后端数据传递

(1) 后端朝前端页面传递数据的方式:    # 将当前所在的名称空间中的名字全部传递给前端页面    # 第一种        return render(request,'index.html',{'n':n})    # 第二种        return render(request,'index.html',locals())      (2) 后端传函数名到前端,会自动加括号调用,但是不支持传参(3) 后端传对象到前端,就相当于打印了这个对象(4) 前端获取后端传过来的容器类型的内部元素 统一采用句点符(.)('关某某','谢某某','陈某某','容嬷嬷')>>>:{
{ t }},{
{ t.1 }} 数字对应的就是数据的索引 (5) 前端能够调用python后端数据类型的一些不需要传参的内置方法(6) 注释: 模板语法的注释,不会展示到前端页面: {#调用python自带的内置方法,可以调用不需要传参的一些内置方法#} 原生html的注释,会展示到前端:

二、过滤器

# 下面的内容,第一行是在前端的代码,第二行是运行的结果(1) 

前端统计字符串的长度:{

{ s|length }}

# 结果:前端统计字符串的长度:16(2)

前端获取数据如果是空就返回default后面默认的参数值:{

{ flag|default:'你这个东西是个空'}}

# 结果:前端获取数据如果是空就返回default后面默认的参数值:123(3)

将数字格式化成表示文件大小的单位:{

{ file_size|filesizeformat }}

# 结果:将数字格式化成表示文件大小的单位:20.3 MB(4)

{

{ ctime }}

# 结果:June 11, 2019, 7:30 p.m.(5)

格式化时间(不要加百分号):{

{ ctime|date:'Y-m-d' }}

# 结果:格式化时间(不要加百分号):2019-06-11(6)

字符串的切片操作:{

{ res|slice:'0:8' }}

# 结果:字符串的切片操作:hello bi(7)

{

{ res|slice:'0:8:2' }}

# 结果:hlob 起始位置:结束位置:步长(8)

截取固定的长度的字符串 三个点也算:{

{ s|truncatechars:10 }}

# 结果:截取固定的长度的字符串 三个点也算:这是 一段 字...(9)

按照空格截取文本内容:{

{ res|truncatewords:4 }}

# 结果:按照空格截取文本内容:hello big ba by~ ...(10)

{

{ s|truncatewords:4 }}

# 结果:这是 一段 字符串 没有别的东西(11)

{

{ 'hahah'|add:'heheheh' }}

# 结果:
后端代码:    ht = '

我是h1标签

' sr = '' 前端:

{

{ ht }}

{

{ sr }}

# 上面两个在前端显示的是纯字符串,不会将其转义成代码执行

{

{ ht|safe }}

{

{ sr|safe }}

# 下面的两句,通过|safe过空滤器将其转义代码执行 前后端取消转义(*****) 前端: |safe 后端: from django.utils.safestring import mark_safe xxx = mark_safe('

我是h1标签

')

三、标签

(1) for循环:    {% for foo in l %}        

{

{ foo }}

{

{ forloop }}

{% endfor %}解释一波:从容器l中一个个的读取数据,然后将其塞入前端的标签里面 {
{ foo }}:取l里面的一个个的值 {
{ forloop }}:下面是一条记录 {'revcounter': 7, 'counter0': 0, 'last': False, 'parentloop': {}, 'counter': 1, 'first': True, 'revcounter0': 6} {
{ forloop.counter0 }} 从0开始计数 {
{ forloop.counter1 }} 从1开始计数
(2) if判断    {% if flag %}        

flag不为空

{% else %}

flag是空

{% endif %}
(3) 嵌套使用{% for foo in l %}    {% if forloop.first %}        

这是我的第一次

{% elif forloop.last %}

这是最后一次了啊

{% else %}

嗨起来!!!

{% endif %} {% empty %}

你给我的容器类型是个空啊,没法for循环

{% endfor %}解释一波:{% if forloop.first %} 判断此次循环是不是第一次,是,就执行下面的代码{% elif forloop.last %} 同样的,判断是不是最后一次,是,就执行下面代码{% empty %} 当你的for循环对象为空的时候会自动走empty代码块儿的内容
(4) 自定义过滤器必须做的三件事:    1.在应用名下新建一个名为templatetags文件夹(必须叫这个名字)    2.在该新建的文件夹内新建一个任意名称的py文件    3.在该py文件中需要固定写下面两句代码from django import templateregister = template.Library()使用之前请先导入  --> 在html模板页面中导入    {% load my_filter %}    这个my_filter是自定义的py文件名(上面定义的三个步骤其二)    # 自定义过滤器    @register.filter(name='XBB')    def index(a,b):        return a+b
使用之前请先导入  --> 在html模板页面中导入    {% load my_filter %}    这个my_filter是自定义的py文件名(上面定义的三个步骤其二)(5) 自定义标签# 自定义标签    @register.simple_tag    def plus(a,b,c):        return a+b+c
(6) 自定义inclusion_tag# 自定义inclusion_tag    @register.inclusion_tag('login.html',name='login')    def login(n):        # l = []        # for i in range(n):        #     l.append('第%s项'%i)        l = [ '第%s项'%i for i in range(n)]        return {'l':l}# login.html    
    {% for foo in l %}
  • {
    { foo }}
  • {% endfor %}
# 调用{% login 5 %}注意 :要想使用自定义的过滤器 标签 inclusion_tag 必须先在需要使用的html页面加载你的py文件 {% load my_tag %} {
{ 666|XBB:8 }} {% plus 1 2 3 %} {% login 5 %}

四、模板的继承与导入

(1) 首先需要在被继承的模板中划分多个区域    {% block 给区域起的名字 %}    {% endblock %}(2) 通常情况下一个模板中应该至少有三块    {% block css %}        页面css代码块    {% endblock %}    {% block js %}        页面js代码块    {% endblock %}    {% block content %}        页面主体内容    {% endblock %}(3) 子板继承模板    1> 先继承模板所有的内容        {% extends 'home.html' %}        2> 然后根据block块的名字修改指定区域的内容    {% block content %}        

登录页面

username:

password:

{% endblock %}(4) 模板的导入:将一段html当做模块的方式导入到另一个html展示 {% include '想导入的html文件名' %}

五、静态文件配置

{% load static %}  
# 第一种方式
# 第二种方式

转载于:https://www.cnblogs.com/xt12321/p/11006137.html

你可能感兴趣的文章
expect 使用实例
查看>>
mysql-删除表方式
查看>>
想学前端,为什么不看这些书呢?
查看>>
我的友情链接
查看>>
Web服务自动监控shell
查看>>
java新输入/输出(nio)记录
查看>>
CIE LAB色差公式与 CIE DE 2000色差公式计算类
查看>>
世界上第一块儿硬盘长这样儿,硬盘59年发展史古董老硬盘让人咋舌让人惊叹!...
查看>>
python 中的最大递归层数
查看>>
Adobe Reader显示某些文档字体虚化无法看清的解决方法
查看>>
几个测试计划模板
查看>>
开源中国 2014 最受关注开源软件排行榜 TOP 50
查看>>
[编程题]寻找第K大
查看>>
EXT 从Store中过滤数据 不用知道行号就可以做到
查看>>
记一次mapreduce读取不到输入文件的问题
查看>>
OC之继承
查看>>
Mac远程控制Mac和Windows
查看>>
我的友情链接
查看>>
MariaDB集群Galera Cluster的研究与测试
查看>>
SONY控制键盘JX-11,EVI-D70P控制方案
查看>>