视图层
小白必会三板斧
- HttpResponse
- render
- redirect
django视图函数必须要给返回一个HttpResponse对象(render和redirect内部返回的也是一个HttpResponse对象)
前后端分离
在前后端分离的情况下,为了保证数据的交互,我们选择JSON格式来传输数据。
前端一个人干(前端转成自定义对象)
JSON.stringify() ——————> json.dumps() JSON.parse() ———————> json.loads()
后端另一个干(python后端用字典)
只要涉及到数据交互,一般情况下都是用的json格式
后端只负责产生接口,前端调用该接口能拿到一个大字典
后端只需要写一个接口文档 里面描述字典的详细信息以及参数的传递
JsonReponse
from django.http import JsonResponse def index(request): data = {'name':'jason好帅哦 我好喜欢','password':123} l = [1,2,3,4,5,6,7,8] # res = json.dumps(data,ensure_ascii=False) # return HttpResponse(res) # return JsonResponse(data,json_dumps_params={'ensure_ascii':False}) # ensure_ascii的作用是可以让中文不被转译成ascii码 return JsonResponse(l,safe=False) # 如果返回的不是字典 只需要修改safe参数为false即可
关于上传文件
form表单上传文件需要注意的事项
1.enctype需要由默认的urlencoded变成formdata
2.method需要由默认的get变成post
(目前还需要考虑的是 提交post请求需要将配置文件中的csrf中间件注释)
如果form表单上传文件 后端需要在request.FILES获取文件数据 而不再是POST里面
request
request.method # 获得请求的类型 request.GET # 获得get请求的数据,一个大字典 request.POST # 获得post请求的数据,一个大字典 request.FILES # 一个类似于字典的对象,包含所有的上传文件信息。 # FILES 中的每个键为<input type="file" name="" /> 中的name,值则为对应的数据。 #注意,FILES 只有在请求的方法为POST 且提交的<form> 带enctype="multipart/form-data" 的情况下才会包含数据。否则,FILES 将为一个空的类似于字典的对象。 request.path # 只回去url后缀 不获取?后面的参数 request.get_full_path() # 后缀和参数全部获取
FBV与CBV(待续)