前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django的拾遗

Django的拾遗

作者头像
若与
发布2018-04-25 11:08:30
4230
发布2018-04-25 11:08:30
举报
文章被收录于专栏:友弟技术工作室
django中设置返回的状态码和头部信息

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

代码语言:javascript
复制
        response = ReturnJson(data, status=401).get()
        return response

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

代码语言:javascript
复制
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(多层继承)

代码语言:javascript
复制
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表单的限制

背景知识

代码语言:javascript
复制
# django的中间件
'django.middleware.csrf.CsrfViewMiddleware',  

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

csrf_token报错

代码语言:javascript
复制
# 导入装饰器
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()

下期预告
代码语言:javascript
复制
  django验证码
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.12.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • django中设置返回的状态码和头部信息
  • 剔除CSRF_token对单个的post表单的限制
  • 下期预告
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档