0、 这篇文章记录一下django中的母版和Cookie的使用,方便自己查询复习
1、母版
什么是母版? 在django中,一些经常重复使用的html代码,我们可以将其独立拉出来,让其他html继承这个html,可以达到不在重写这些代码,还可以实现这些代码的功能,独立拉出来的html页面就是母版。
1、1 母版的使用
假如:a.html 是母版,他的内容是以下代码
{% block x1 %} {% endblock %}
<h1>xxxx</h1>
....
{% block x2 %} {% endblock %}
<span>yyyyyyy</span>
{% block x3 %} {% endblock %}
其中,{% block x1 %} {% endblock %} 是占位符,并不会在页面输出
b.html 继承 a.html
{% extends a.html %}
{% block x1 %} xxxx{% endblock %}
{% block x2 %}ssss {% endblock %}
{% block x3 %}dddd {% endblock %}
b.html 中 {% extends a.html %} 指定继承的母版,{% block x1 %} xxxx {% endblock %} 替换掉 a.html 中的 {% block x1 %} {% endblock %},并且在相应位置展示b.html中写的内容
2、Cookie
django中设置Cookie
def index(request):
req = redirect("....) # 获取返回值
req.set_cookie("text", "AAA") # 设置Cookie,第一个参数是key,第二个是值
req.set_signed_cookie("text", "AAA", salt="sss") # 设置加密的Cookie,第一个参数是key,第二个是值,第三个我的理解是,加的干扰信息
获取Cookie
def index(request):
cookies = request.COOKIES # 返回的是所有的cookie,以字典的方式
value = request.COOKIES.get("XXXX") # 返回的是具体的一个cookie的值
删除cookie
response = HttpResponse()
response.delete_cookie(key="")
cookie的加密和获取解密后的值
# 加密
res = HttpResponse("OK")
res.set_signed_cookie("demo", "BBBASDK", salt="salt")
# 获取加密之前的数据
cookie = request.get_signed_cookie(key="demo", salt="salt") # 要指明 key 和 salt 对应的值
在 django 中通过 HttpResponse.set_signed_cookie() 对cookie加密的cookie,并没有对值进行加密,而是添加了一个验证,例如:
BBBASDK:1iBsYP:ZNMAl263mEIyzNs3MqXaAXaVkMw # 加密之后的数据
我们可以看到并没有将值给加密,而是添加了一个认证,用户在浏览器上还是可以直接读取到cookie的值的,只能自己手动的给cookie的值进行加密,python中可以使用 hashlib 这个模块