Django笔记03-模板引擎
CSRF攻击
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本XSS,但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性
CSRF中间件和模板标签为防止跨站点请求伪造提供了易用的保护。
当恶意网站包含链接,表单按钮或某些旨在在您的网站上执行某些操作的JavaScript时,会使用在浏览器中访问恶意网站的登录用户的凭据进行此类攻击。
还介绍了一种相关攻击类型,即“登录CSRF”,攻击网站欺骗用户的浏览器,以便使用其他人的凭证登录到网站。
Template模板
模板概念
作为Web 框架,Django 需要一种很便利的方法以动态地生成HTML。最常见的做法是使用模板。
模板包含所需HTML 输出的静态部分,以及一些特殊的语法,描述如何将动态内容插入。
模板语法
1.变量
变量输出语法
{{ var }}
当模版引擎遇到一个变量,将计算这个变量,然后将结果输出
变量名必须由字母、数字、下划线(不能以下划线开头)和点组成
当模版引擎遇到点(“.”),会按照下列顺序查询:
- 字典查询,例如:foo[“bar”]
- 属性或方法查询,例如:foo.bar
- 数字索引查询,例如:foo[bar]
如果变量不存在, 模版系统将插入’’ (空字符串)
在模板中调用方法时不能传递参数
2.标签
- 语法
{ % tag % }
- 作用
- 在输出中创建文本
- 控制循环或逻辑
- 加载外部信息到模板中
for标签
1
2
3{ % for ... in ... % }
循环逻辑
{ % endfor % }if标签
1
2
3
4
5
6
7{ % if ... % }
逻辑1
{ % elif ... % }
逻辑2
{ % else % }
逻辑3
{ % endif % }comment标签
1
2
3{ % comment % }
多行注释
{ % endcomment % }include:加载模板并以标签内的参数渲染
1
{ % include "base/index.html" % }
url:反向解析
1
{ % url 'name' p1 p2 % }
csrf_token:这个标签用于跨站请求伪造保护
1
{ % csrf_token % }
Django框架自带的后台
在浏览器访问 admin
http://127.0.0.1:8000/admin/
需要登录,因此要创建一个超级用户
在命令行执行下一个命令进行创建python3 manage.py createsuperuser
重新启动服务后 ,使用创建的用户进行后台的登录
配置settings.py文件,配置语言和时区
1
2
3
4
5LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False自定义过滤/器
在应用中创建一个templatetags文件夹
在templatetags 包中定义一个模块文件diytags.py
1 |
|
- 在需要使用的模板中, 导入自定义的模块
验证码
这里调用的PIL库实现的
1 | from django.http import HttpResponse |
ajax实现城市多级联动
视图函数
1 | def citys(request): |
urls路由
1 | urlpatterns = [ |
前台界面
1 |
|