title: Django高级技巧
date: 2021-05-31 01:04:47
permalink: /pages/f3e1fb/
categories:

  • 软件测试
  • 测试开发
  • Django框架技术
    tags:

Django 高级技巧

一、表单

1. 表单必填属性

  • action : 提交的URL
  • method : 请求方法, get 或者 post
  • enctype : 三种编码方式

    • application/x-www-form-urlencoded 键值对方式
    • multipart/form-data 二进制编码
    • text/plain 文本方式

3. Django高级技巧 - 图1

2. 处理 request

  • 判断请求方法 request.method

    • 值是大写的 POST 、GET 、 PUT 、 DELETE
  • 获取 post 表单数据 request.POST[key] 或者 request.POST.get()

    • request.POST 返回的是一个字典
      3. Django高级技巧 - 图2

二、 Django 安全策略

1. CSRF 防御机制

settings.py 文件

3. Django高级技巧 - 图3

CSRF : 跨站请求伪造,是一个常见的网络攻击手段。

Django 默认为开启了 防范 CSRF 攻击机制。

对于 GET 请求,一般来说没有这个问题,CSRF 通常是针对 POST 或 PUT 方法的。

2. 处理方式

  1. 将防御机制注释
    1. # 'django.middleware.csrf.CsrfViewMiddleware',
  1. 使用 @csrf_exempt 装饰器
    3. Django高级技巧 - 图4

  2. 在表单内部加上 {%csrf_token%}
    3. Django高级技巧 - 图5

三、 请求的重定向

  • http 重定向

    • 把原本访问 A 的请求 转给 B
    • 状态码 : 301(永久重定向) 302(临时重定向)
  • Django 快捷方法

    • redirect(视图,参数) 对应状态码 302
      3. Django高级技巧 - 图6

3. Django高级技巧 - 图7

四、 Django 单元测试

Django 的单元测试采用 Python 的标准模块:unittest 。 该模块以类的形式定义测试。

  • 主要测试对象:数据模型
  • 运行方法:python manage.py test
  • 测试文件: app 目录下的 test.py