Django( 学习第四部 Django的views视)

目录

视图层

  JsonResponse对象

  form表单之文件上传

   request方法及属性

  FBV与CBV

JsonResponse对象

前端序列化
    JSON.stringify()        json.dumps()
    JSON.parse()            json.loads()

基础版(dic)
import jsom
def add(request):
    a = {'12':'八嘎'}
    b = json.dumps(a,ensure_ascii=False)
    return HttpResponse(b)

进阶版(dic)
from django.http import JsonResponse

def add(request):
    a ={'你好':123,123:'夏一一'}
    return JsonResponse(a,json_dumps_params={'ensure_ascii':False})    #原型化输出


(list)

def add(request):
    a = [123,'你好']
    return JsonResponse(a,safe=False)
原型化输出没有解决

form 表单上传文件及后端操作 

html部分

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
    <p>username:<input type="text" name="username"></p>
    <p>file:<input type="file" name="file"></p>
    <input type='submit'>
</form>
</body>
</html>

视图函数部分

def upload(request):
    if request.method =="POST":
        print(request.FILES)
        file_obj = request.FILES.get('file')
        print(file_obj.name)
        with open (file_obj.name,'wb') as f:
            for i  in file_obj.chunks():
                f.write(i)
    return render(request,"form.html")

 request对象方法

''''
request.method   #获取请求方式
request.POST      #获取post请求
request.GET        #获取get请求
request.FILES      #获取文件

request.path            #获用户输入的路由
request.path_info     #获用户输入的路由
request.get_full-path()   #获用户输入的路由,以及所携带对的参数

request.body       #原生浏览器发来的二进制数据(了解)
'''   

FBV与CBV

# 视图函数可以是类也可以是函数



#FBV
def index(request):
    return HttpResponse('index')


#CBV
from django.views import View
    
    class Mylogin(View):
        def get(self,request):
            return HttpResponse('get方法')
        def post(self,request):
            return HttpResponse('post方法') 


CBV 的路由匹配

path('login/',views.Mylogin.as_view())



'''
FBV和CBV各有千秋
CBV的特点:    能够直接获取请求方式,并根据请求方式不同匹配到对应的方法执行

'''

CBV原码剖析
(没搞懂,后期补存 加油liuun)
好好学习,天天向上。
原文地址:https://www.cnblogs.com/f211/p/13789286.html