首页 > 其他 > 详细

django之视图层

时间:2020-01-07 22:09:33      阅读:87      评论:0      收藏:0      [点我收藏+]

视图层是指浏览器访问的url在路由层找到了匹配关系后,django将调用相应的视图函数,视图函数将返回一个结果,该结果就是浏览器将要显示的内容。

1.django.shortcuts中的三剑客

HttpResponse、redirect、render

from django.shortcuts import render, HttpResponse, redirect
# HttpResponse
return HttpResponse('hello world')

# redirect
return redirect('https://www.baidu.com')

# render
return render(request,'.html')

# 视图函数本质上都是返回一个HttpResponse对象。

render内部原理

def ab_render(request):
    temp = Template("<h1>{{ user_dict }}{{ user_dict.username }}{{ user_dict.password }}</h1>")
    user_dict = Context({'user_dict':{'username':'jason','password':123}})
    res = temp.render(user_dict)
    return HttpResponse(res)

JsonResponse

from django.http import JsonResponse

def index(request):
    my_dict = {
        'user':'yyh',
        'password':123,
    }
    return JsonResponse(my_dict)

JsonResponse类源码

class JsonResponse(HttpResponse):
    def __init__(self, data, encoder=DjangoJSONEncoder, safe=True,
                 json_dumps_params=None, **kwargs):
        if safe and not isinstance(data, dict):
            raise TypeError(
                'In order to allow non-dict objects to be serialized set the '
                'safe parameter to False.'
            )
            if json_dumps_params is None:
                json_dumps_params = {}
                kwargs.setdefault('content_type', 'application/json')
                data = json.dumps(data, cls=encoder, **json_dumps_params) # ***
                super(JsonResponse, self).__init__(content=data, **kwargs)

可以看到有个默认参数safe=True,如果safe为True则只能传入dict对象否则会报错,可以通过将safe参数变为False,便可传入python的其他基本数据类型。

json.dumps源码

django之视图层

原文:https://www.cnblogs.com/Ghostant/p/12163675.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!