{% load staticfiles %}
{% static 静态资源 %}
Ajax - Asynchronous JavaScript and XML
YAML
JSON - JavaScript Object Notation
{
"from": "Jack",
"to": "Tom",
"content": "Hello, world!"
}
<?xml version="1.0" encoding="utf-8"?>
<message>
<from>Jack</from>
<to>Tom</to>
<content>Hello, world!</content>
</message>
CSRF ---> 跨站请求伪造 ---> {% csrf_token %}
Cross Site Request Forge
HTTP协议是无连接无状态协议 ---> 两次请求之间不会保存用户的任何数据
再次请求服务器的时候 服务器无法得知请求是来自哪个用户的请求
一般情况下服务器应用都需要记住用户来为用户提供更好的服务
用户跟踪 ---> 如果希望服务器记住用户可以使用以下三种辅助方式:
- URL重写 http://www.baidu.com/?uid=xxxxxx
- 隐藏域(隐式表单域)---> 埋点
<form>
<input type="hidden" name="uid" value="xxxxxx">
</form> - 浏览器本地存储
~ cookie - 浏览器中的一个临时文件可以保存键值对
cookie中的数据在发起HTTP请求时会自动加载请求头中
~ window.localStorage / window.sessionStorage
cookie和session的关系
request.session ---> 服务器内存中的一个对象,可以保存用户数据
cookie ---> 用户浏览器临时文件 ---> cookie中保存了session的ID
BASE64编码 ---> 用64个文字符号表示任意二进制数据
原理:将原来的三字节每6个比特一组变成四个字节
用A-Z、a-z、0-9、+和/一共64个字符来代表一个字节
Python ---> base64模块 ---> b64encode() / b64decode()
JavaScript ---> window ---> btoa() / atob()