• django之视图系统 views.py-->主要内容(FBV和CBV、dispath、request对象和request.FILES、JsonResponse)


    一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。

    一 视图的实现可以基于两种方法:

    1 基于函数的形式 FBV

    使用装饰器装饰FBV 

    直接在上面添加

    @wrapper
    def display(request):

    2 基于类的方式实现CBV

    使用 装饰器装饰CBV

    二 dispatch()

    # 使用CBV时要注意,请求过来后会先执行dispatch()这个方法,如果需要批量对具体的请求处理方法,如get,post等做一些操作的时候,
    这里我们可以手动改写dispatch方法,这个dispatch方法就和在FBV上加装饰器的效果一样。

    例如;

    class Login(View):
         
        def dispatch(self, request, *args, **kwargs):
            print('before')
            obj = super(Login,self).dispatch(request, *args, **kwargs)
            print('after')
            return obj
     
        def get(self,request):
            return render(request,'login.html')
     
        def post(self,request):
            print(request.POST.get('user'))
            return HttpResponse('Login.post')

     三 request对象

    当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpRequest对象。
    Django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象。

    请求相关的常用值

    • path_info     返回用户访问url,不包括域名
    • method        请求中使用的HTTP方法的字符串表示,全大写表示。
    • GET              包含所有HTTP  GET参数的类字典对象
    • POST           包含所有HTTP POST参数的类字典对象
    • body            请求体,byte类型 request.POST的数据就是从body里面提取到的

    下面让我们来看看 path_info 和body

    当输入的是中文的时候

    下面看一个上传文件的例子 Request.FILES

    四Response对象

    JsonResponse对象

    前后端传递的一般是json文件

    import json
    from django.http import JsonResponse
    def data_json(request):
        data={'name':"xinxin",'age':30}
        return HttpResponse(json.dumps(data)) #Content-Type: text/html; charset=utf-8
        # return JsonResponse(data) #Content-Type: application/json

     如果使用非字典的形式会报错,如何解决,加上safe=False

    In order to allow non-dict objects to be serialized set the safe parameter to False.
    def data_json(request):
        data_list=[1,2,3]
        # return JsonResponse(data_list)
        return JsonResponse(data_list,safe=False)
  • 相关阅读:
    【SPOJ7258】Lexicographical Substring Search-后缀自动机+拓补序递推
    【WHU1583】Palindrome-回文自动机+双向插入
    【WHU1583】Palindrome-回文自动机+双向插入
    【APIO2014T1】回文串-回文自动机(PAM)模板题
    【APIO2014T1】回文串-回文自动机(PAM)模板题
    【NOI2011T4】道路修建-树形DP
    【NOI2011T4】道路修建-树形DP
    BZOJ 2693 JZPTAB
    BZOJ 1679 牛的呼声
    BZOJ 2229 最小割
  • 原文地址:https://www.cnblogs.com/mmyy-blog/p/9826001.html
Copyright © 2020-2023  润新知