Django的拾遗

作者: 若与 | 来源:发表于2016-12-10 10:10 被阅读116次

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验证码

相关文章

  • Django的拾遗

    django中设置返回的状态码和头部信息 下面先给出我工作中使用到的代码: 其中,ReturnJson是自己定义的...

  • 拾遗神兽目录

    拾遗神兽(番外篇)黑猫 拾遗神兽(1)水晶心的梦 拾遗神兽(2)新宠 拾遗神兽(3)初次交锋猫大爷 拾遗神兽(4)...

  • About Django

    Django: 安装Django pip3 install django 创建Django工程 运行Django功...

  • 更新&摄影投稿说明

    编辑『拾遗』 图『拾遗』 排版『拾遗』 『我们不只是用相机拍照。我们带到摄影中去的是所有我们读过的书,看过的电影,...

  • Django之旅:1

    包含内容 Django简介 Django环境搭建 Django创建项目 访问Django项目 Django简介 在...

  • django入门搭建项目

    Django前期准备,安装Django pip isntall django 如果需要指定django的版本则: ...

  • 中晚唐文化典型代表人物白居易

    白居易那些年担任的职位 拾遗 808年,白居易做了左拾遗。 拾遗是属于唐代言官,主要是规谏朝廷的缺失。这个官职是6...

  • windows下通过pip安装Django

    可参考文档:如何在 Windows 上安装 Django | Django 文档 | Django (django...

  • glance of django

    Django at a glance¶django 总览 Because Django was developed...

  • High Performance Django读书笔记

    Django weblog Django Community Django PackagesDjango Pack...

网友评论

    本文标题:Django的拾遗

    本文链接:https://www.haomeiwen.com/subject/cugymttx.html