模板、csrf攻击解释、网址反转解析

django中文3.0版本帮助文档

模板

1.模板语言

简称DTL(Django Template Language)

2.模板变量

模板变量名是由数字,字母,下划线和点组成的,不能以下划线开头

使用模板变量:{{ 模板变量名 }}

点前面的可能是字典,对象,列表

3.模板标签(比较操作符两边必须有空格)

模板标签的统一表达式:{% python代码 %}
遍历的次数:{{ forloop.counter }}
if语句的使用:
{% if 条件 %}
{% endif %}
3.1模板过滤器

date: 改变日期的显示格式

length: 求长度。字符串,列表

default: 设置模板变量的默认值

格式:模板变量 | 过滤器:参数

4.自定义过滤器函数,至少有一个参数,最多两个参数

5.django的注释

单行注释:{# 注释内容 #}
多行注释:{% comment %}注释内容{% endcomment %}

6.模板的继承

{% extends 'booktest/base.html' %} 这行代码继承父模板(base.html)的所有内容

{% block 块名 %}
    {{ block.super }}
    block.super可以获取父模块的内容
    这里可以写子模版想要写的内容
{% endblock 块名 %}
错误:TemplateSyntaxError
解决方法:查看每个关键字间是否只有一个空格

7.html转义

使用safe过滤器关闭转义:<br/>
{{ content|safe }}

使用autoescape标签关闭html转义:<br/>
{% autoescape off %}    
{{ content }}
{% endautoescape %}

模板硬编码默认不会经过转义:<br/>
{{ no_content|default:'<h2>硬编码</h2>' }}

8.csrf攻击(跨站请求伪造)

开启csrf防护,需要在post表单下加入以下代码才能避免自己的网站被屏蔽

{% csrf_token %}

其他没有包含csrfmiddlewaretoken标签的网页会返回403错误

8.1防御原理:

1)渲染模板文件时在页面生成一个名字为 csrfmiddlewaretoken 的隐藏域。

2)浏览器在访问服务器的时候,服务器会交给浏览器保存一个名字为csrftoken的cookie信息。

3)提交表单时,两个值都会发给服务器,服务器进行比对,如果一样,则csrf验证通过,否则返回403错误。

9.网址反向解析

需要在include中添加app name和namespace,一般情况是全部一样,

在需要反向解析的网址后面加入name指定后面需要反向解析的名字,

在模板文件中需要加入{% url 'booktest:index' %}代码,在应用的urls中配置是指定name;

url(r'^', include(('booktest.urls', 'booktest'), namespace='booktest')),
url(r'^index3$', views.index, name='index'),
{% url 'booktest:index' %}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容