templates

1,在App中创建自己的templates
这个模板路径不用在settings中注册
2,在工程级目录中创建templates
需要配置模板路径
settings
模板路径是存在一个列表中
就是相对于注册模板路径的一个相对路径

{{ var }}

变量
遵循命名规范

点语法
获取属性
调用方法,不能传递参数
{{ pet.p_name }}

索引
{#代表索引拿出来,0表示第一条#}
{{ pets.0.p_age }}

{% csrf_token %}

{#只要在django里用post请求,就必须用这行代码#}
{% csrf_token %}

使用中间件csrf_token
1. 增加系统安全性
2. 尽量不要关闭,在请求头的cookie中生成了验证口令
3.在请求的cookie中生成一个中间件,在表单中使用,并且用post请求
4. 默认django中集成了验证,使用的时候需要在表单中添加{% csrf_token %}
5. 关闭,在settings中的middleware中将csrf删除

token

  1. 令牌,用来验证身份
  2. token只是一种验证规则
  3. 生成规则,(1)保证生成数据唯一,(2)用户唯一,拼接时间戳,拼接公司域名,工程名字,(md5(摘要)算法,)
  4. md5 本质是128位2进制,32个16进制,把16进制的字符转换成字符串,md5 都是32位,不管输入多长,输出都是一样长

for in

当列表为空或不存在时,执行empty之后的语句

    {% for pet in pets  %}
        <li>{{ pet.p_name }}</li>
        {% empty %}
        <h3>你的宠物</h3>
    {% endfor %} 

forloop , counter索引,默认是1,需要定义counter0

{{ forloop.counter }} 从1数数
{{ forloop.counter0}}从0数数
{{ forloop.revcounter}}倒着数数,到1停
{{ forloop.revcounter0}},倒着数,到0停
{{ forloop.first }} 是否是第一个 布尔值
{{ forloop.last }} 是否是最后一个 布尔值
{% empty %}是否为空

{% for pet in pets  %}
        <li>{{ forloop.counter }}{{ pet.p_name }}</li>
    {% endfor %}

{% for pet in pets  %}
        <li>{{ forloop.revcounter0}}{{ pet.p_name }}</li>
    {% endfor %}

if else

{% if xxx %}

 {% else %}
-------------------
{% if xxx %}

 {% endif %}
--------------------
{% if xxx %}

{% elif xxx %}

 {% endif %}
------------------

{% ifequal game1 game2 %}
   <h2>你真是情投意合</h2>
  {% endifequal %}
--------------------

<ul>
    {% for pet in pets %}

        {% if forloop.first %}
            <li style="color: #ff0000">{{ pet.p_name }}</li>

                {% elif forloop.last %}
                <li style="color: #00ff00">{{ pet.p_name }}</li>

            {% else %}
            <li style="color: #00ffff">{{ pet.p_name }}</li>
        {% endif %}
    {% endfor %}

</ul>

网络安全转义

safe 网络安全
html转义渲染
开发中尽量保持纯文本
如果进行html渲染
可能会被其它人利用进行恶意注入
{% autoescape on/off %}
{% endautoescape %}

HTML转义
将接收到的数据当成普通字符串处理还是当成HTML代码来渲染的一个问题,
把试图函数里的数据在HTML页面中渲染出代码的形式,这样做很危险,一般别用
开发尽量保持纯文本,如果进行HTML渲染,可能会被其他人利用进行恶意注入

1,在视图函数里面定义

def getw(request):
    content = '<h1>你是垃圾</h1>'
    return render(request,'welcome.html',context={'content':content})

2,在HTML页面里面渲染
渲染成html:
第一种转义

{{ code|safe}}

第二种转义

{% autoescape off%}
{{ content }}
{% endautoescape %}

不想渲染

{% autoescape on%}
    code
{% endautoescape %}

挖坑

1, extends继承,写在开头位置,模板继承,

{% extends ‘父模板路径’ %}
创建基类模板
(1)导入统一资源JS CSS
(2)预留常用模板位置
(3)将页面结构设计好
继承基模板
根据页面需求进行数据填充

2, 挖坑,填坑

{% block content %}
 code
 {% endblock %}

首次出现,挖坑
子类模板出现的父类出现过的坑,填坑操作
填坑可以嵌套,没有填写的坑,在HTML中自动忽略

3, include: 解耦思想,将一个HTML页面拆分成多个模块,让代码更容易维护
{% include ‘模板文件’ %}

过滤器

系统中存在很多的过滤规则
运算
加减 add

乘除
withradio
num 分母 分子
整除
divisiableby

乘除,分子分母 ,1/5

<ul>
    {% for pet in pets %}
       <li>{% widthratio forloop.counter 1 5 %}</li>
    {% endfor %}

</ul>

{# |过滤器 隔行变色#}

<ul>
    {% for pet in pets %}
       {% if forloop.counter|divisibleby:2 %}
        <li style="color:  #ffff00">{{ pet.p_name }}</li>
      {% else %}
           <li style="color: #00ff00">{{ pet.p_name }}</li>
       {% endif %}
    {% endfor %}

</ul>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值