Django - 高级技巧

一、表单

1. 表单必填属性

  • action : 提交的URL
  • method : 请求方法, get 或者 post
  • enctype : 三种编码方式
    • application/x-www-form-urlencoded 键值对方式
    • multipart/form-data 二进制编码
    • text/plain 文本方式

2. 处理 request

  • 判断请求方法 request.method

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

    • request.POST 返回的是一个字典

二、 Django 安全策略

1. CSRF 防御机制

settings.py 文件

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

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

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

2. 处理方式

  1. 将防御机制注释

    1
    # 'django.middleware.csrf.CsrfViewMiddleware',
  2. 使用 @csrf_exempt 装饰器

  3. 在表单内部加上 {%csrf_token%}

三、 请求的重定向

  • http 重定向

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

    • redirect(视图,参数) 对应状态码 302

四、 Django 单元测试

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

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