django之视图系统 views.py

Posted dawn-liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django之视图系统 views.py相关的知识,希望对你有一定的参考价值。

一个视图函数(类),简称视图,是一个简单的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)

 

以上是关于django之视图系统 views.py的主要内容,如果未能解决你的问题,请参考以下文章

Django之视图(views.py)

Django框架之---视图

Django之视图Views

django基础知识之定义视图:

django之视图函数

Django的视图与网址之加法计算