一 小白必会三板斧

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">
View Code
            request.method
            request.GET
            request.POST
            request.FILES
            request.path  # 只回去url后缀 不获取?后面的参数
            request.get_full_path()  # 后缀和参数全部获取
            
02-11 22:52