Django的拾遗

简介: django中设置返回的状态码和头部信息下面先给出我工作中使用到的代码: response = ReturnJson(data, status=401).

django中设置返回的状态码和头部信息

下面先给出我工作中使用到的代码:

        response = ReturnJson(data, status=401).get()
        return response

其中,ReturnJson是自己定义的类,用户返回json格式,做接口使用的.

from django.http import JsonResponse

class ReturnJson(object):
    def __init__(self, data, status=None):
        # status = status是设置返回的状态码
        self.response = JsonResponse(data, safe=False, status=status)
        # 设置返回的头部信息,下面是解决跨域API的问题
        self.response['Access-Control-Allow-Origin'] = 'http://local.adx.com'
        self.response['Access-Control-Allow-Credentials'] = 'true'
        self.response['Access-Control-Allow-Headers'] = 'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Access-Control-Allow-Credentials'

    def get(self):
        return self.response

上面的JsonResponse是继承于HttpResponseBase(多层继承)

class HttpResponseBase(six.Iterator):
    status_code = 200 # 默认 200

    # 初始化实例函数中,有status,下面的对象都是放在 **kwgs中了.
    def __init__(self, content_type=None, status=None, reason=None, charset=None):
        self._headers = {}
        self._closable_objects = []
        # This parameter is set by the handler. It's necessary to preserve the
        # historical behavior of request_finished.
        self._handler_class = None
        self.cookies = SimpleCookie()
        self.closed = False
        if status is not None:
            self.status_code = status
        self._reason_phrase = reason
        self._charset = charset
        if content_type is None:
            content_type = '%s; charset=%s' % (settings.DEFAULT_CONTENT_TYPE,
                                               self.charset)
        self['Content-Type'] = content_type

剔除CSRF_token对单个的post表单的限制

背景知识

# django的中间件
'django.middleware.csrf.CsrfViewMiddleware',  

设置好了,一般出错如图:

csrf_token报错
# 导入装饰器
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
@login_required(login_url="/api/user/login/")
def add(request):
    name = request.POST.get('name')  # 加入判断是否为空
    password = request.POST.get('password')

上面赠送了一个装饰器 @login_required()

下期预告

  django验证码
目录
相关文章
|
2月前
|
项目管理 数据库 Python
Django怎么用
【9月更文挑战第1天】Django怎么用
20 1
|
存储 缓存 中间件
Django相关知识点回顾(二)
Django相关知识点回顾(二)
|
JSON 关系型数据库 数据库
|
Shell 数据库 Python
Django学习记录
Django学习记录
|
数据安全/隐私保护 Python Windows
ycharm+Django之Django学习(1)(初学者)
教学属于博主的自学记录,适合刚学习Django的同学,如果比较熟的就不用look了!!!
127 0
ycharm+Django之Django学习(1)(初学者)
|
关系型数据库 MySQL 程序员
|
存储 前端开发 测试技术
Django 优秀资源大全
版权: https://github.com/haiiiiiyun/awesome-django-cn Awesome Django 介绍 Awesome-Django 是由 Roberto Rosario 发起和维护的 Django 资源列表。
2706 0
|
前端开发 数据库 索引
10.Django细节性知识点回顾(二)
打开微信扫一扫,关注微信公众号【数据与算法联盟】 转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.
1145 0
|
Python
django 初试
/************************************************************************************** * django 初试 * 说明: * 昨天打搭了dgango的服务器,今天学一下怎么来输出一个hello world出来。
765 0
|
数据库 Python
django 1.8 官方文档翻译:6-3 Django异常
Django异常 DJango会抛出一些它自己的异常,以及Python的标准异常。 Django核心异常 Django核心异常类定义在django.core.exceptions中。
1210 0