模板

         概述:模板由两部分组成:HTMl代码逻辑控制代码:变量、标签、过滤器作用:很便利的生成HTML优点:模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用模板处理:加载:根据给定的标识找到模板然后预处理,通常会将它编译好放在内存中渲染:使用Context数据对模板插值并返回生成的字符串定义模板:变量:视图传递给模板的数据要遵守标识符规则语法:{{ var }}注意:如果使用的变量不存在,则插入的是空字符串在模板中使用点语法:字典查询属性或方法数字索引在模板中调用对象的方法:注意:不能传递参数标签:语法:{% tag %}作用:在输出中创建文本控制逻辑和循环控制if:格式:
{% if 表达式 %}语句
{% endif %}
{% if 表达式 %}语句1
{% else %}语句2
{% endif %}
{% if 表达式1 %}语句1
{% elif 表达式2 %}语句2
...
{% else %}语句n
{% endif %}
                         for:格式:
{% for 变量 in 列表 %}语句
{% endfor %}
{% for 变量 in 列表 %}语句1
{% empty %} # 列表为空或不存在时执行语句2语句2
{% endfor %}
{{forloop.counter}} # 表示当前是第几次循环
                         comment:作用:注释多行语法:
{% comment %}注释内容
{% endcomment %}
                         ifequal/ifnotequal:作用:判断相等或不相等格式:
{% ifequal 值1 值2 %}语句
{% endifequal%}
{% ifnotequal 值1 值2 %}语句
{% endifnotequal%}
                         include:作用:加载模板并以标签内的参数渲染格式:{% include '模板目录' 参数1 参数2 %}url:作用:反向解析格式:{% url'namespace:name' p1 p2 %}csrf_token:作用:用于跨站请求伪造保护格式:{% csrf_token %}block、extends:作用:用户模板的继承autoescape:作用:用于HTML转义过滤器:语法:{{  var|过滤器 }}作用:在变量被显示前,修改lowerupper过滤器可以传递参数,参数用引号引起来:join:格式:列表|join:‘#’示例:<h1> {{ list|join:'#' }} </h1>如果一个变量没有被提供,或值为false、空,可以使用默认值:default:格式:{{ var|default:'price' }}示例:<h1> {{ text|default:'空' }} </h1>根据给定格式转换为字符串:date:格式:{{ date|date:'y-m-d' }}HTML转义:escape判断奇数偶数:
{% if forloop.counter|divisibleby:2 %}语句1
{% else %}语句2
{% endif %}
                         加减乘除:
{{ num|add:price }} # 加法
{{ num|add:-price }} # 减法
< (num/n1) *n2 >
{% widthradio price n1 n2 %} # 乘法
{% widthradio price n1 n2 %} # 除法法
                 注释:单行注释:语法:{#  #}多行注释:见‘comment’过滤器反向解析:
# 项目urls.py 文件中 加入namespace属性
re_path(r'^', include(('myApp.urls', 'myApp'), namespace="myApp"))
# app应用中urls.py 文件中 加入name属性
url(r'^login/$', views.login, name="login")
# 前端
<a href="{% url 'myApp:login' %}">点击</a>
         模板继承:作用:可以减少页面的内容的重复定义,实现页面重用block标签:在父模板中预留区域,子模板去填充语法:{% block 标签名 %}{% endblock 标签名 %}extends标签:继承模板,需要写在模板文件第一行语法:{% extends ‘父模板路径’ %}示例:
# 在base.html中
<h1>头部</h1>
{% block main %}
{% endblock main %}
<h1>尾部</h1>
# 在main.html中
{% extends 'myApp/base.html' %}{% block main %}<h1>我是中间部分</h1>
{% endblock main %}
         HTML转义:问题:会把HTML代码直接当成字符串原样输出解决:
{{code|safe}}
或
{% autoescape off %}
{{code}}
{% endautoescape %}
         CSRF:跨站请求伪造:某些恶意网站包含链接、表单、按钮、js,利用登录用户在浏览器认证,从而攻击服务防止CSRF:在settings.py中的MIDDLEWARE下加入< 'django.middleware.csrf.CsrfViewMiddleware', >{% csrf_token %}:这个要隐藏在HTML页面中,避免被破解,从而攻击服务器验证码:作用:在用户注册、登录页面的时候使用,为了防止暴力请求,减轻服务器的压力, 也是防止CSRF的一种方式

Django 第五天相关推荐

  1. Django基础五之Django模型层(二)多表操作

    Django基础五之Django模型层(二)多表操作 一 创建模型 表和表之间的关系 一对一.多对一.多对多 # 作者表 比较常用的信息放在这个表中 class Author(models.Model ...

  2. WEB后端服务第15天-Django第五天

    WEB后端服务第15天-Django第五天 一.csrf (防止跨站请求伪造) 1.1 {% csrf_token %} 标签 在 模板的<form>内部使用即可,会生成隐藏字段, 名称为 ...

  3. Django(五)模型(model)系统 -- 常用字段和字段参数

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...

  4. Django(五)中间件

    一次请求的生命周期 我们先看客户端发起一次http请求的流程 注:django框架不包括socket, 要借助图中的两个模块来实现socket,进行客户端和服务端通信.wsgi性能较弱,一般测试开发用 ...

  5. day 64 Django 第五天 多表对多表的对应关系ORM

     一.查 设置 Author表  在 views文件中 # 作者表 class Author(models.Model):id =models.AutoField(primary_key=True)n ...

  6. nginx fastcgi python_linux下nginx+python+fastcgi部署总结(django版)

    最近因为项目上的需要开始大量使用nginx,因此也想趁机将以前常用的django+apache的架构换成django+nginx+fastcgi,此文是整个搭建的步骤,主要留作备忘,也希望对大家有所帮 ...

  7. django admin使用在前端_Django| 给你博客装个Markdown编辑器

    小白学Django系列: 小白学Django第一天| MVC.MVT以及Django的那些事 小白学Django第二天| Django原来是这么玩的! 小白学Django第三天| 一文带你快速理解模型 ...

  8. 2022学Django----基础五之Ajax

    尊重原创版权: https://www.gewuweb.com/hot/5401.html Django基础五之Ajax 尊重原创版权: https://www.gewuweb.com/sitemap ...

  9. 小白学Django第九天| Cookie和session的那些骚操作

    点击上方"JAVAandPython君",选择"星标"公众号 重磅干货,第一时间送达 小白学Django系列: 小白学Django第一天| MVC.MVT以及D ...

最新文章

  1. vue+elementui项目打包后样式变化问题
  2. php图片加边框,php在图片上增加矩形框并加入水印
  3. 文本编辑器Nano实用快捷键
  4. ubuntu各版本代号(更新至15.04)及各版本下载地址等
  5. ABP Vnext 4.4:统一Ef Core的DbContext/移除EF Core Migrations项目
  6. 【Leetcode | 】93. 复原IP地址
  7. python读取raw图片文件_在python下读取并展示raw格式的图片实例
  8. 防火墙在setup进入不了
  9. 配置豪华的 Windows 开发环境
  10. 【渝粤教育】广东开放大学 生产与运作管理 形成性考核 (36)
  11. 设计模式 -(1)简单工厂模式(创建型)
  12. python 链接spark_Spark大数据分布式处理实战:一文带你走进大数据世界
  13. 乾颐堂军哥HCNP真题(科目221)解析,含2017年最新更新后题库,61到75题
  14. 华为hs8145v5刷机包_华为hs8145v5刷机包_华为P40 Pro(ELSAN00/TN00)官方11.0.0.155固件卡刷包强刷包救砖包...
  15. 深入理解计算机系统02——信息的表示与处理
  16. 【微信小程序】一文读懂页面导航
  17. linux dns主配置文件,RHEL 5下DNS的主配置文件详解
  18. 使用pyechart生成节点关系图
  19. 谁能比我细---秒懂Http请求走私
  20. 我的机器人害我输了钱,我能告他吗?

热门文章

  1. Unity动画☀️二、什么是按钮动画?什么是2D精灵动画?如果你想知道,我现在就带你研究!
  2. 数据处理(二)数据聚合
  3. leaflet百度坐标转天地图坐标(bd09转大地2000)(leaflet篇.56)
  4. UPack的PE文件头分析与OEP查找
  5. 民生银行牛新庄:单账户成本从2.2元降到8分,分布式架构重构银行IT
  6. linux删除u盘隐藏分区,利用分区助手和BootICE工具隐藏U盘原分区及调整分区方法...
  7. 【SpringCloud】Hystrix断路器【五】
  8. 怎么压缩图片大小到指定kb?如何自定义图片压缩大小?
  9. Ubuntu 简单的视频剪辑方法
  10. 计算机最快键操作方法,电脑快捷键技巧