一 小白必会三板斧
1.HttpResponse 2.render 3.redirect django视图函数必须要给返回一个HttpResponse对象(正确)
二 前后端分离
1.前端一个人干(前端转成自定义对象)
JSON.stringify() json.dumps()
JSON.parse() json.loads()
2.后端另一个干(python后端用字典),只要涉及到数据交互,一般情况下都是用的json格式
后端只负责产生接口,前端调用该接口能拿到一个大字典,后端只需要写一个接口文档 里面描述字典的详细信息以及参数的传递
三 JsonReponse
from django.shortcuts import HttpResponse,render,redirect from django.http import JsonResponse def index(request): data = {'name':'jason好帅哦 我好喜欢','password':123} ls = [1,2,3,4,5,6,7,8] #return JsonResponse(l,safe=False) # 如果返回的不是字典 只需要修改safe参数为 false即可 return JsonResponse(data,json_dumps_params={'ensure_ascii':False}) # 向前端展示字典 # 另一种方式(不推荐) # res = json.dumps(data,ensure_ascii=False) # return HttpResponse(res) # return JsonResponse(data,json_dumps_params={'ensure_ascii':False})
四 form表单上传文件
form表单上传文件需要注意的事项 1.enctype需要由默认的urlencoded变成formdata 2.method需要由默认的get变成post (目前还需要考虑的是 提交post请求需要将配置文件中的csrf中间件注释) 3.如果form表单上传文件 后端需要在request.FILES获取文件数据 而不再是POST里面
#后端: def upload_file(request): if request.method == 'POST': # print(request.POST) file_obj = request.FILES.get('myfile') # print(file_obj) # file_obj就是文件对象 print(file_obj.name) # 文件名 # 文件操作 将上传的文件写入后端 with open(file_obj.name,'wb') as f: for line in file_obj.chunks(): # file_obj也是一个可迭代对象 f.write(line) return HttpResponse('收到了') return render(request,'file.html') #前端 <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="myfile"> <input type="submit">
request.method request.GET request.POST request.FILES request.path # 只回去url后缀 不获取?后面的参数 request.get_full_path() # 后缀和参数全部获取