python接收前端post数据_Django后台获取前端post上传的文件方法

本文介绍了在Django中如何接收和处理前端POST上传的文件。通过在HTML表单中加入csrf_token,然后在views.py中使用request.FILES.get()获取文件,可以读取文件名、大小,并使用default_storage.save()保存到指定路径,最后将路径存入数据库完成引用。
摘要由CSDN通过智能技术生成

由于初学Django所以对于其特有的表单模板和models中的filefiled并不是特别熟悉。因此在本次开发中还是依照以往自己在html中写好图片提交表单:

d6607133c38a46262c8edcfe3c3f2627.png

注意在

表单的定义中一定要加上enctype= “multipart/form-data"属性,否则后台可能会取不到文件。

在form表单后一定要有{% csrf_token %}

我们在控制页面可以看到,当我们通过这样的表单进行提交后,FILES一栏中会有一个文件。

3a388b22f0574f6f17eb83d0bdf10d23.png

我们可以在views.py中通过

image=request.FILES.get('images')去获取到该图片

2b05a2069c67aedba2b8aa65b7f8e609.png

当我们获取到图片img后,可以通过

image.name 获取到图片的名字

image.size获取到图片的大小

image.read()可以获取图片内容

通过

path=default_storage.save(路径,ContentFile(image.read()))

tmp_file = os.path.join(settings.MEDIA_ROOT,path)

及可以把图片从缓存中保存到相应路径下

7d2b4c892a884594650dda1b9447f291.png

我们可以看到很上传的额图片已经直接能够保存在设置的目录当中了

0648452c5dbb9f6bb07655f706c079c5.png

最后再将对应的路径放入数据库中,就可以完成引用了。

以上这篇Django后台获取前端post上传的文件方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

Django中,我们可以通过以下步骤接收前端发送的POST数据并保存在不同表中: 1. 首先,在views.py文件中定义一个处理该POST请求的视图函数。可以使用Django提供的装饰器`@csrf_exempt`来取消跨站请求伪造防护。示例代码如下: ```python from django.views.decorators.csrf import csrf_exempt from django.http import JsonResponse @csrf_exempt def save_data(request): if request.method == 'POST': # 接收前端发送的POST数据 data = request.POST # 保存数据到不同的表中 # 在这里执行相应的数据保存操作,例如使用ORM进行数据库操作 # 返回一个包含成功状态的JSON响应 return JsonResponse({'status': 'success'}) ``` 2. 将该视图函数与一个URL路径进行绑定,以便能够通过该路径访问该视图函数。在urls.py文件中添加相应的URL配置,如下所示: ```python from django.urls import path from .views import save_data urlpatterns = [ path('save-data/', save_data, name='save_data'), ] ``` 3. 在前端,你可以使用AJAX技术发送POST请求到上述URL路径,并将表单数据作为POST数据发送。以下是一个使用jQuery的示例代码: ```javascript $.ajax({ url: '/save-data/', type: 'POST', data: { // 在这里传递需要保存的数据 // 可以根据表结构传递相应的字段和值 }, success: function(response) { // 处理服务器返回的响应 // 例如显示成功消息或重定向到其他页面 } }); ``` 通过以上步骤,你就可以在Django接收前端发送的POST数据并将其保存到不同的表中了。请确保在保存数据时使用适当的模型(Model)和数据库操作(ORM)来执行相应的保存操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值