模板、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过滤器关闭转义:
{{ content|safe }} 使用autoescape标签关闭html转义:
{% autoescape off %} {{ content }} {% endautoescape %} 模板硬编码默认不会经过转义:
{{ no_content|default:'

硬编码

' }}

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' %}

你可能感兴趣的:(模板、csrf攻击解释、网址反转解析)