Django之向服务器上传文件

Django上传文件有三种方式。
方式一:通过form表单提交到后台;
方式二:通过ajax提交;
方式三:通过iframe提交。

我这里实现的是第一种方法,源码也是借鉴别人的,然后稍作修改。但是在查找的过程中因为自己在这方面是小白,大神们的教程里给出代码后具体一些细节上的设置基本都是几句话概括,让我在这里花了一些时间去摸索。所以为了有像我一样的小白免去这个过程,就把我通过百度摸索出来的步骤分享一下。

Step1:创建存放.html的文件夹,这里我创建的文件夹名为uploadpic,文件夹的名字是什么都无所谓,只不过需要在settings.py中需要申明该文件夹,具体在后续步骤中提到。
在这里插入图片描述
Step2:在uploadpic文件夹中创建一个uploadfile.html,代码如下。代码中action = "/upload_file/"这部分,等号右边的名称可以随便去,但是在urls.py中需要将其关联起来。

Title {% csrf_token %}

Step3:在views.py中写好响应函数,这里需要两个响应函数。一个是加载html的响应函数,还有一个是上传文件的响应函数。具体如下:

#加载html响应函数
def upload_html(request):
	return render(request, 'uploadfile.html') 

#文件上传响应函数
def uploadfil
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django 中,可以通过 Django 自带的文件处理模块来实现文件上传到服务器的功能。具体步骤如下: 1. 在 settings.py 中配置上传文件存储目录: ```python MEDIA_ROOT = '/path/to/media' MEDIA_URL = '/media/' ``` 2. 在 models.py 中定义上传文件的模型: ```python from django.db import models class UploadFile(models.Model): title = models.CharField(max_length=50) file = models.FileField(upload_to='uploads/%Y/%m/%d/') ``` 其中,`upload_to` 参数指定上传文件存储的相对路径,可以根据需要进行修改。 3. 在 forms.py 中定义上传文件的表单: ```python from django import forms from .models import UploadFile class UploadFileForm(forms.ModelForm): class Meta: model = UploadFile fields = ('title', 'file',) ``` 4. 在 views.py 中处理文件上传请求: ```python from django.shortcuts import render, redirect from .forms import UploadFileForm def upload_file(request): if request.method == 'POST': form = UploadFileForm(request.POST, request.FILES) if form.is_valid(): form.save() return redirect('success') else: form = UploadFileForm() return render(request, 'upload.html', {'form': form}) def success(request): return render(request, 'success.html') ``` 5. 在模板文件 upload.html 中添加文件上传表单: ```html <form method="post" enctype="multipart/form-data"> {% csrf_token %} {{ form.as_p }} <button type="submit">上传文件</button> </form> ``` 6. 在模板文件 success.html 中显示上传成功信息: ```html <h2>文件上传成功!</h2> ``` 通过以上步骤,就可以实现 Django上传文件服务器的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值