django服务器端对象

  1. 解决post数据接收不到的问题

    settings.py中可能要注释掉:# 'django.middleware.csrf.CsrfViewMiddleware',
    
  2. get型数据

    http://localhost:8080/user/login/?name=tom
    request.GET.get('name')
    request.GET['name']
    
  3. post型数据

    #post数据为form-data或者x-www-urlencoded
    request.POST.get('name')
    request.GET['name']
    #post数据为json
    data=json.loads(request.body)
    print(data['name'])
    
  4. 获取header中的信息

    #key要加HTTP前缀,并且大写
    token=request.META.get('HTTP_TOKEN')
    print('token')
    
  5. HttpResponse(数据,状态码,cookie)

    return HttpResponse(json.dumps(content),status=200,charset='utf-8',content_type='application/json')		
    
  6. JsonResponse(),直接返回json型数据

    	content={
            "code":"888"
        }
       resp=JsonResponse(content,status=200,charset='utf-8',content_type='application/json')
       # 设置cookie的过期时间
       date_int = datetime.utcnow() + timedelta(hours=1)
       # 创建会话
       resp.set_cookie('token', value='1234567890', expires=date_int)
       return resp
    
  7. HttpResponseRedirect重定向

    return HttpResponseRedirect(reverse('position:index'))
    
  8. 序列化,从数据库取出数据后,返回给客户端应该为json格式

    from django.core import serializers
    ret = models.BookType.objects.all()
    data = serializers.serialize("json", ret)
    
  9. json.dumps无法处理datatime格式,所以要自定义处理器

    import json 
    from datetime import date 
    from datetime import datetime 
       
    class JsonCustomEncoder(json.JSONEncoder): 
        
        def default(self, field): 
         
            if isinstance(field, datetime): 
                return o.strftime('%Y-%m-%d %H:%M:%S') 
            elif isinstance(field, date): 
                return o.strftime('%Y-%m-%d') 
            else: 
                return json.JSONEncoder.default(self, field) 
    
  10. 自定义中间件

    在根目录下简历mymiddleware文件夹,创建py文件,在里面写
    
    from django.http import HttpResponse
    from django.utils.deprecation import MiddlewareMixin
    class RequestAuth(MiddlewareMixin):
        def process_request(self, request):
            print(request.GET.get('id'))
            print('333')
            # return HttpResponse('sorry')
        def process_view(self, request, callback, callback_args, callback_kwargs):
            i = 1
            print('444')
            pass
        def process_exception(self, request, exception):
            print('555')
            return HttpResponse(exception)
        def process_response(self, request, response):
            print('666')
            return response
    
    还有在setting文件里加入
    MIDDLEWARE = [
    # 自定义中间件
    # 'mymiddlewares.middlewareauth.RequestAuth',
    ]
    

猜你喜欢

转载自blog.csdn.net/qq_42650983/article/details/82871745
今日推荐