Python django-04 视图层:前后端分离 JsonResponse form表单上传文件

一 小白必会三板斧

1.HttpResponse
2.render
3.redirect
django视图函数必须要给返回一个HttpResponse对象(正确)
            

二 前后端分离

1.前端一个人干(前端转成自定义对象)
JSON.stringify()          json.dumps()
JSON.parse()              json.loads()
2.后端另一个干(python后端用字典),只要涉及到数据交互,一般情况下都是用的json格式
后端只负责产生接口,前端调用该接口能拿到一个大字典,后端只需要写一个接口文档 里面描述字典的详细信息以及参数的传递

三 JsonResponse

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(ls,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()  # 后缀和参数全部获取
request.body # 原生二进制数据(有时不让查看,可以通过dbug查看)

转载于:https://www.cnblogs.com/tfzz/p/11537212.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本门课程重实战,将基础知识拆解到项目里,让你在项目情境里学知识。 这样的学习方式能让你保持兴趣、充满动力,时刻知道学的东西能用在哪、能怎么用。 平时不明白的知识点,放在项目里去理解就恍然大悟了。   一、融汇贯通 本视频采用了前后端分离的开发模式,前端使用Vue.js+Element UI实现了Web页面的呈现,后端使用PythonDjango框架实现了数据访问的接口,前端通过Axios访问后端接口获得数据。在学习完本章节后,真正理解前后端的各自承担的工作。   二、贴近实战 本系列课程为练手项目实战:学生管理系统v4.0的开发,项目包含了如下几个内容:项目的总体介绍、基本功能的演示、Vuejs的初始化、Element UI的使用、在Django中实现针对数据的增删改查的接口、在Vuejs中实现前端增删改查的调用、实现文件的上传、实现表格的分页、实现导出数据到Excel、实现通过Excel导入数据、实现针对表格的批量化操作等等,所有的功能都通过演示完成、贴近了实战   三、课程亮点 在本案例中,最大的亮点在于前后端做了分离,真正理解前后端的各自承担的工作。前端如何和后端交互   适合人群: 1、有Python语言基础、web前端基础,想要深入学习Python Web框架的朋友; 2、有Django基础,但是想学习企业级项目实战的朋友; 3、有MySQL数据库基础的朋友  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值