1.常用标签

(1)模板标签重要概念:

1.定义:标签在渲染的过程中提供任意的逻辑

注意:(这个定义是刻意模糊的。 例如,一个标签可以输出内容,作为控制结构,例如“if”语句或“for”循环从数据库中提取内容,甚至可以访问其他的模板标签。)

2.标签语法: 由 {% 和 %} 来定义的,例如:{%tag%} {%endtag%}

(2)常用模板标签讲解及使用:

1.模板标签中的for循环:

①music应用下的views.py文件

模拟从数据库中得到的数据:

def test01(request):

li=["第一条数据", "第二条数据", "第三条数据", "第四条数据", "第五条数据", "第六条数据","第七条数据", "第八条数据",]

return render(request,"test02.html",context={"li":li})

②对应的前端html模板文件test02.html

在此模板中使用模板标签中的for循环

Title

p{

width: 100px;

color: aqua;

height: 40px;

line-height: 40px;

background-color: skyblue;

}

{#如果直接使用模板变量这样是列表形式在前端显示:#}

{{ li }}

{#使用模板标签中的for循环遍历之后就可以使用html对其进行排版了:#}

{% for foo in li %}

{{ foo }}

{#foo是循环出来的每一条数据,通过循环对每条数据都进行排版!#}

{% endfor %}

③前端实现:

2.模板标签中的if判断:

①music应用下的views.py文件

{#模拟从前端接收到的用户登录与否的状态信息!#}

def test01(request):

b=True

return render(request,"test02.html",context={"b":b})

②对应的前端html模板文件test02.html

在此模板中使用模板标签中的for循环

Title

{#简单实现注册登录以及登录成功的判断:#}

{#模拟用户浏览网页时,如果登录的话显示用户名名;如果未登录的话显示注册 登录。#}

{% if b %}

欢迎小明

{% elif b == "123" %}{#只是演示下如何进行多重判断,在此处无实际用处!#}

啊哈

{% else %}

注册 登录

{% endif %}

③前端实现:

3.模板标签中的页面跳转:

①music应用下的urls.py文件(在这里我们可以给相应的url路径取个name属性值,这个值是唯一的!!!)

from django.contrib import admin

from django.urls import path

from . import views

urlpatterns = [ #子路由

path('test01/',views.test01),

path('sing/',views.sing,{"name":"小明","age":18},name="bb"),

]

②对应的前端html模板文件test02.html

Title

{#实现本地网页的跳转:#}

{#第一种方法:#}

{#第一个例子:跳转到首页#}

首页1 {# 如果直接写首页路径,今后万一咱的域名改变了,那么所有跳转的都要跟着一个个改,太麻烦啦! #}

首页2 {# 这种方法就避免了刚刚说的情况! /代表的就是当前的ip地址加端口号:http://127.0.0.1:8888 #}

{#第二个例子:跳转到带有路径的html界面#}

跳转1 {# 这样也可能会出现刚刚说的那种情况 #}

跳转2 {# 这样不会出现刚刚说的那种情况,但是如果咱对应url的路径进行了改变,也会产生与刚刚类似的情况#}

{#第二种方法: 不管域名或者路径如何改变,name值不变就不需要改变,简单#}

跳转3{#通过url的name属性值跳转到对应的页面!#}

4.模板标签中的开启和关闭自动转义(是否让html标签在前端中生效!):

①music应用下的views.py文件

def test01(request):

html1='

拉拉

'

html2='

拉拉

'

html3='

拉拉

'

html4='

拉拉

'

return render(request,"test02.html",context={"h1":html1,"h2":html2,"h3":html3,"h4":html4})

②对应的前端html模板文件test02.html

Title

{#如果我们使用过滤器的话,那么一次只能识别一个,如果数量非常多的话,工作量就太大了!#}

{{ h1|safe }}

{#所以模板标签为我们解决了这个问题,不管需要开启自动转义的有多少个,位置分的有多散,只要将其包裹在下面的两行代码之内,都可开启其的自动转义!#}

{% autoescape off %}

{{ h1 }}

{{ h2 }}

{{ h3 }}

{% endautoescape %}

4.模板标签中的url携带参数传递

(前面通过转换器可以实现借由url进行参数传递;现在模板标签也可以进行参数传递!)

5.模板标签中的注释:

2.模板的继承与引用

(

网站中有些不同的页面当中有些数据是完全一模一样的;

有些数据是不一样的但是前端的排版格式是一模一样的

)

Django模版引擎中最强大也是最复杂的部分就是模版继承了。 模版继承可以让你创建一个基本的“骨架”模版,它包含您站点中的全部元素,并且可以定义能够被子模版覆盖的 blocks 。

(1)首先,看一个例子:(同一个站点下有三个html模板,样式如下!!!)

①第一个html模板:

a_first.html文件

Title

*{

margin: 0;

padding: 0;

}

.top{

height: 200px;

background: darkgoldenrod;

}

.con{

height: 500px;

background: aqua;

}

.but{

height: 150px;

background: sandybrown;

}

头部
内容一
底部

前端实现:

②第二个html模板:

a_second.html

Title

*{

margin: 0;

padding: 0;

}

.top{

height: 200px;

background: darkgoldenrod;

}

.con{

height: 500px;

background: aqua;

}

.but{

height: 150px;

background: sandybrown;

}

.con .left{

width: 70%;

float: left;

height: 100%;

background: red;

}

.con .right{

width: 30%;

float: left;

height: 100%;

background: #352fff;

}

头部
内容二
广告

底部

前端实现:

③第三个html模板:

a_third.html

Title

*{

margin: 0;

padding: 0;

}

.top{

height: 200px;

background: darkgoldenrod;

}

.con{

height: 500px;

background: aqua;

}

.but{

height: 150px;

background: sandybrown;

}

.con .left{

width: 70%;

float: left;

height: 100%;

background: #f338ff;

}

.con .right{

width: 30%;

float: left;

height: 100%;

background: #24ff44;

}

头部
内容三
广告

底部

前端实现:

(2)不难看出,这三个前端界面头部和底部是一模一样的;后两个的中间内容部分右侧也都是广告页面。而我们为了实现这三个html界面分别码了那么多重复的代码,费时费力,考虑到类可以继承,那么咱的html模板能否继承呢?答案是肯定的,下面咱们来使用模板的继承看一看可以给咱节省多少精力:

①编写父级模板base.html:(编写父级模板原则:相同的部分直接编写代码,使子模板直接继承[模板继承使用extends标签实现];不同的部分通过使用block来给子模板开放接口,使子模板可以进行覆写[模板覆写使用block标签实现])

Title

*{

margin: 0;

padding: 0;

}

.top{

height: 200px;

background: darkgoldenrod;

}

.con{

height: 500px;

background: aqua;

}

.but{

height: 150px;

background: sandybrown;

}

.con .right{

width: 30%;

float: left;

height: 100%;

background: #352fff;

}

{% block style %}{% endblock %} {#让子模板可以对css样式进行覆写!#}

头部

{% block con %}

{% block left %}

{% endblock %}

{% block right %}

广告

{% endblock %}

{% endblock %}

底部

②第一个html模板:

a_first.html文件:

{% extends 'music/base.html' %}

{% block con %}

内容一

{% endblock %}

②第二个html模板:

a_second.html文件:

{% extends 'music/base.html' %}

{% block style %}

.con .left{

width: 70%;

float: left;

height: 100%;

background: red;

}

{% endblock %}

{% block left %}

内容二

{% endblock %}

②第三个html模板:

a_third.html文件:

{% extends 'music/base.html' %}

{% block style %}

.con .left{

width: 70%;

float: left;

height: 100%;

background: #f338ff;

}

.con .right{

width: 30%;

float: left;

height: 100%;

background: #24ff44;

}

{% endblock %}

{% block left %}

内容三

{% endblock %}

(3)经过Django实现会发现跟上面不使用模板继承效果一模一样!!!而且咱的代码简洁太多 。来总结一下模板的继承及引用:

模板继承使用extends标签实现。通过使用block来给子模板开放接口。

1、extends必须是模板中的第一个出现的标签。

2、子模板中的所有内容,必须出现在父模板定义好的block中,否则django将不会渲染。

3、如果出现重复代码,就应该考虑使用模板。

4、尽可能多的定义block,方便子模板实现更细的需求。

5、如果在某个block中,要使用父模板的内容,使用block.super获取。

html5只能django来写if吗,(4)Django学习——模板标签定义及语法:for循环,if判断,页面跳转,开启关闭自动转义,ur...相关推荐

  1. 13.Django中几大常用模板标签讲解及实战使用 【for循环;if判断;页面跳转;开启关闭自动转义;url携带参数传递;注释】

    1.常用模板标签 (1)模板标签重要概念: ①定义:标签在渲染的过程中提供任意的逻辑. ②标签语法: 由 {% 和 %} 来定义的,例如:{%tag%} {%endtag%}   (2)常用模板标签讲 ...

  2. Django实践(二)——使用模型类定义数据表,实现表单页面跳转

    Django实践(二)--使用模型类定义数据表,实现表单页面跳转 1.设计和开发信息发布的数据防访问层 配置djangosite/settings.py中的INSTALLED_APPS,添加应用app ...

  3. django “如何”系列4:如何编写自定义模板标签和过滤器

    django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足你的要求,如果觉得需更精准的模板标签或者过滤器,你可以自己编写模板标签和过滤器,然后使用{% load %}标签使用他们. 代码 ...

  4. python实现gui+mysql图书管理系统_用Python Django框架写一个图书管理系统LMS

    今天我会带大家真正写一个Django项目,对于入门来说是有点难度的,因为逻辑比较复杂,但是真正的知识就是函数与面向对象,这也是培养用Django思维写项目的开始 Django文件配置 Django模版 ...

  5. 09、HTLM中直接写get请求和模板标签分片功能

    2019独角兽企业重金招聘Python工程师标准>>> 一.在html中herf属性直接写get请求,传数据到相应函数坐下一步操作 二.使用模板标签的过滤语法slice来分片 1.u ...

  6. 如何写一个完整的django网站:配置环境啥的不讲(python+mysql+html相关) 肆

    虽然好像到现在为止只有几个人看了,但是心塞的作者还是给大家放一下网站的目录伐, 其中两个文件夹中可以忽略,存放css和js样式的,但是实践证明必须导入外部文件中的内容,额,js和css存放在图片2所示 ...

  7. 如果只能通过IE写博客【Do we write blog just only with IE?】

    今天正想着写篇博文,依旧用我熟悉的FIREFOX打开51cto的博客页面.但是当我单击[管理博客]后,突然发现管理页面已经不能很好的显示了!如下图: 单击[添加文章],进度条完成后,没有任何反应.其他 ...

  8. ubuntu修改u盘权限_Ubuntu下提示U盘没有些权限的只能读不能写

    在Windows下,U盘能够正常地读写文件(能复制粘贴),但发现有个文件打不开.然后在Ubuntu LInux下,U对U盘只能读不能写.提示:Read only system. 参考:https:// ...

  9. html语言可以写模版继承吗,Django框架(十一):模板介绍、模板语言、模板继承、HTML转义...

    1. 模板介绍 1.1 模板的功能 产生html,控制页面上展示的内容.模板文件不仅仅是一个html文件. 模板文件包含两部分内容: 静态内容:css.js.html. 动态内容:用于动态去产生一些页 ...

最新文章

  1. centeros php pgsql,centos php添加pgsql扩展
  2. 克鲁斯卡尔算法(公交站问题)
  3. 【bzoj 1754】【POJ - 2389 】Bull Math (高精度运算)
  4. php双引号表示什么,PHP中的单引号和双引号字符串有什么区别?
  5. div添加一个点击事件(绑定点击事件)
  6. php 修改服务器ip,php 修改服务器ip
  7. 【浙大第19届校赛:B】Even Number Theory (数论n!中有多少个质因子2+java大数)
  8. 计算机辅助编程可分为,计算机辅助编程的特点及类型
  9. python刻度增加1个数_Matplotlib添加一个特定的勾号,表示轴的最大多个刻度单次观察...
  10. C语言 - 判断素数的函数
  11. 9550电机_电机扭矩计算公式里面的9550*P是怎么得来的?
  12. 《信号与系统》(吴京)部分课后习题答案与解析——第五章(PART3)(系统)
  13. excel函数提取计算机登录名,excel常用函数怎么提取姓氏?excel常用函数提取姓氏的方法...
  14. 什么是顶级域名和一级域名,如何区分
  15. win7桌面计算机图标去掉,win7桌面图标小箭头怎么去掉?
  16. 【备忘录】transformers tokenizer.tokenize和tokenizer.encode
  17. codeforces 1077E Thematic Contests
  18. python wxpython菜鸟教程_wxpython新手向教程
  19. 供应商分级方案:企业供应商管理系统助力汽车零部件企业实现供应商自动分级
  20. QQ9.0需要安装两个插件

热门文章

  1. 快速入门上手第一课 | 从云计算到 Serverless
  2. tensorflow 版本列表_最新|谷歌发布TensorFlow 1.3.0版本,都更新了哪些内容?
  3. 信息产业浪潮中,京东 IoT 的技术演进与实践创新
  4. Rust 升级成微软第一梯队语言;“熊孩子”乱敲键盘攻破 Linux 桌面;500 个值得学习的 AI 开源项目| 开发者周刊...
  5. 如何摆脱初学者的不自信,成为一名专业编程人士?
  6. 还在用 if else?试试策略模式吧!
  7. 数十名工程师作战 5 天,阿里达摩院连夜研发智能疫情机器人
  8. AI 如何应用于油气勘探?
  9. 面试大厂被怼!这都搞不定,你只能做“搬运工”!
  10. Nginx 之父被捕,程序员如何避免面向起诉编程?| CSDN 博文精选