目录
视图层
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)