10-项目开发-8-文件上传_学习day10
文件上传
1. 基本操作
1 | <form method="post" enctype="multipart/form-data"> |
1 | def upload_list(request): |
2. 案例:批量上传数据
1 | <form method="post" enctype="multipart/form-data" action="/depart/multi/"> |
1 | def depart_multi(request): |
3. 混合数据上传(Form)
- 提交页面时,用户输入数据+文件(输入不能为空、报错)
1 | class UpForm(forms.Form): |
1 | <div class="panel panel-primary" style="width: 40rem;margin-top: 20px"> |
3.1 创建一个数据库用来保存提交的数据
1 | class Boss(models.Model): |
3.2 读取上传的文件内容,写入到文件夹中并获取文件路径,将路径保存到数据库
1 | def upload_list(request): |
4. media文件夹-存放用户上传文件
在urls.py 文件中进行配置
1 | from django.urls import re_path |
settings.py中设置
1 | MEDIA_ROOT = os.path.join(BASE_DIR, "media") |
5. 混合数据上传(ModelForm)
models.py
1
2
3
4
5
6class City(models.Model):
"""演示上传文件(ModelForm版本)"""
name = models.CharField(verbose_name="名称", max_length=32)
count = models.IntegerField(verbose_name="人口", default=0)
# FileField会自动保存文件路径到数据库,upload_to会将文件保存到相应路径
img = models.FileField(verbose_name="Logo", max_length=128, upload_to='city/')定义ModelForm
1
2
3
4
5class UpModelForm(BootStrapModelForm):
boot_exclude = ['img']
class Meta:
model = models.City
fields = "__all__"视图
1
2
3
4
5
6
7
8
9
10
11def upload_model_list(request):
"""上传数据(ModelForm版本)"""
title = "ModelForm上传"
if request.method == "GET":
form = UpModelForm()
return render(request,'upload_model_list.html',{"form":form, "title": title})
form = UpModelForm(data=request.POST, files=request.FILES)
if form.is_valid():
form.save()
return HttpResponse("上传成功")
return render(request, 'upload_model_list.html', {"form": form, "title": title})
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Summer 自习室!