首页 > 其他分享 >django 简单文件上传

django 简单文件上传

时间:2023-08-01 11:12:41浏览次数:38  
标签:uploaded 文件 False form models request upload django 上传

通过模型来处理上传的文件

如果想要在 FileField 上的 Model 保存文件,使用 ModelForm 会让这一过程变得简单。当调用 form.save() 时,文件对象将会被保存在对相应 FileField 的 upload_to 参数所指定的地方:

from django.http import HttpResponseRedirect
from django.shortcuts import render
from .forms import ModelFormWithFileField


def upload_file(request):
    if request.method == "POST":
        form = ModelFormWithFileField(request.POST, request.FILES)
        if form.is_valid():
            # file is saved
            form.save()
            return HttpResponseRedirect("/success/url/")
    else:
        form = ModelFormWithFileField()
    return render(request, "upload.html", {"form": form})

参考: https://docs.djangoproject.com/zh-hans/4.2/topics/http/file-uploads/

实例使用:

@login_required
def upload_book(request):
	user = request.user
	if request.method == 'POST':
		form = BookForm(request.POST, request.FILES)
		if form.is_valid():
			obj = form.save(commit=False)
			uploaded_by = Account.objects.filter(email=user.email).first()
			obj.uploaded_by = uploaded_by;
			obj.save()
			return redirect('book_list')
	else:
		form = BookForm()
	return render(request, 'book/upload_book.html', {
		'upload_form' : form
		})

  

model配置 

 

class Book(models.Model):
	title = models.CharField(max_length=100, null=False, blank=False)
	author = models.CharField(max_length=100, null=False, blank=False)
	pdf = models.FileField(upload_to='files', null=False, blank=False)
	date_uploaded = models.DateTimeField(auto_now_add=True, verbose_name = "date uploaded")
	uploaded_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete = models.CASCADE)
	# slug = models.SlugField(blank=True, unique=True)

 form 配置

 

from django import forms
from .models import Book

class BookForm(forms.ModelForm):
	class Meta:
		model = Book
		fields = ('title', 'author', 'pdf')

  

标签:uploaded,文件,False,form,models,request,upload,django,上传
From: https://www.cnblogs.com/weifeng1463/p/17595954.html

相关文章

  • pandas模块--------------------------------相同(不同)文件夹下相同格式的Excel表格数
    上代码:importpandasaspdimportos#文件路径file_dir=r'C:/Users/Administrator/Desktop/test/'#构建新的表格名称new_filename=file_dir+'/new_file.xlsx'#找到文件路径下的所有表格名称,返回列表file_list=os.listdir(file_dir)new_list=[]forfileinfile_list:......
  • python发送消息到Teams以及阿里云的上传与删除
    1importurllib2importtime3importoss24importos5importrandom6frompathlibimportPath7importrequests8importdatetime9fromdecoupleimportconfig1011fromurllib.parseimportunquote121314#......
  • C#删除和清空文件夹的程序
    ///<summary>///清空指定的文件夹,但不删除文件夹///</summary>///<paramname="dir"></param>privatevoidDeleteFolder(stringdir){foreach(stringdinDirectory.GetFileSystemEntries(dir)){if(File.Exists(d))......
  • 巧用Python中set集合对比两个文本文件
    """1.读取文件2.使用set集合s.add(x)添加xins是否在集合中>>>basket={'apple','orange','apple','pear','orange','banana'}>>>print(basket)           #这......
  • Android NIO学习之文件拷贝
    publicstaticlongforChannel(Filef1,Filef2)throwsException{longtime=newDate().getTime();intsize=2*1024;FileInputStreamin=newFileInputStream(f1);FileOutputStreamout=newFileOutputStream(f2);FileChannelinC=in.getChannel......
  • mp3文件后128字节歌曲信息读写操作
    参照网上相关资料,实现向mp3文件后128字节写入指定数据,并读取出来.项目中为向MP3文件写入歌曲信息,如歌手、专辑、歌名等.第一步:创建关键类SongInfopublicclassSongInfo{privateStringTAG="TAG";//文件头1-3privateStringsongName="歌名";//歌曲名4-33priva......
  • j2me 判断手机文件系统大小
    j2me项目判断手机文件系统大小现象:在项目中需要下载资源到机文件系统.当手机文件系统空间写满时下载进度会一直停留在那不动。解决办法:在写资源到手机文件系统时先进行手机文件系统剩余空间大小判断.并给出提示.程序:j2me判断手机文件系统空间大小代码publicstaticlongg......
  • Django 动态操作model
    fromdjango.appsimportappsforoinoids_result:oid_result=snmp.snmpWalk(o.oid)ifo.model_filed_nameandlen(o.model_filed_name)>0:field_name=o.model_filed_name.get('field_......
  • 通过局域网访问连接 vite 或 Django 之类的项目
    博客地址:https://www.cnblogs.com/zylyehuo/step1将vite或Django类的项目启动ip设置为0.0.0.0:端口step2查询本机电脑在当前局域网下的ipstep3将跳转路径改为查询到的本机ip,再加上第一步中设置的前端端口......
  • m3u8 流视频数据文件。
    #EXT-X-KEY:METHOD=AES-128,URI="https://edu.aliyun.com/hls/1109/clef/YnBGq7zAJf1Is7xIB5v8vI7AIORwwG9W",IV=0x0fe82567a6be41afda68d82d3724976a有URI中的信息为key,访问后得到有IV时使用IV,没有IV时,通常会在m3u8地址中提供,比如下面的最后一部分即iv:eb7ab5bb3cb1ae35f6d5......