首页 > 其他分享 >【django学习-28】列表界面模板下载与上传文件

【django学习-28】列表界面模板下载与上传文件

时间:2024-05-15 21:19:01浏览次数:22  
标签:title 28 django 下载 file path 上传 模板

  • 前言,我们在实际项目开发过程中,经常有列表界面,有上传功能,并且支持先下载模板,后上传
  • 1.实现效果与前端展示
<form method="post" enctype="multipart/form-data" action="/depart/multi/">
    {% csrf_token %}
    <div class="form-group">
        <input type="file" name="exc">
    </div>
    <input type="submit" value="上传" class="btn btn-info btn-sm">
    <a class="btn btn-info btn-sm" href="/depart/download/">模板下载</a>

</form>

  • 2.模板下载,先需要在项目中上传模板
def depart_download(request):
    """下载部门导入模板"""
    BASE_DIR = Path(__file__).resolve().parent.parent
    media = os.path.join(BASE_DIR, "static","excel")
    file_path = os.path.join(media, '部门导入模板.xlsx')
    try:
        f = open(file_path, "rb")
        r = FileResponse(f, as_attachment=True, filename="部门导入模板.xlsx")
        return r
    except Exception:
        raise Http404("down error")
  • 3.上传部门数据
def depart_multi(request):
    """批量上传部门"""
    # 获取文件对象
    file_object = request.FILES.get("exc")   # exc 前端标签的name属性
    if not file_object:
        return HttpResponse("请上传文件")

    # 读取内容,并且保存到数据库
    from openpyxl import load_workbook
    wb = load_workbook(file_object)
    sheet = wb.worksheets[0]
    # 循环每一行数据
    for row in sheet.iter_rows(min_row=2):
        title = row[0].value
        exists = models.Department.objects.filter(title=title)
        if not exists:
            models.Department.objects.create(title=title)
    return redirect("/depart/list/")

标签:title,28,django,下载,file,path,上传,模板
From: https://www.cnblogs.com/xwltest/p/18194722

相关文章

  • 【django学习-27】media介绍与文件上传
    前言:django开发过程中,有2个文件夹(也即:目录)比较特殊:static文件夹(目录)、media文件夹(目录)。static目录:我们项目自己用到的文件(css、js、项目图片、插件),建议放在static目录下。media目录:用户自己上传的文件等资源,建议放在media目录下。要想用media目录,必须先配置启用它。1.me......
  • django中使用redis
    【1】通用方式########写个pool.pyimportredisPOOL=redis.ConnectionPool(max_connections=10,decode_responses=True)######在哪里用,导入用即可fromutils.poolimportPOOLimportredisclassRedisView(ViewSet):deflist(self,request):conn=red......
  • 【django学习-26】图片验证码
    1.我们在登录的时候,经常看到输入用户名、密码之外。还需要输入验证码。这个验证码是怎么实现的呢?2.前端{%loadstatic%}<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><linkrel="styleshee......
  • 【django学习-25】登录及使用中间件进行登录校验
    1.登录功能实现1.1:管理员表fromdjango.dbimportmodelsclassAdmin(models.Model):"""管理员"""username=models.CharField(verbose_name="用户名",max_length=32)password=models.CharField(verbose_name="密码......
  • django-drf 全局封装
    封装全局异常common_exceptions.pyfromrest_framework.viewsimportexception_handlerfromrest_framework.responseimportResponsedefcommon_exception_handler(exc,context):#记录日志request=context.get('request')view=context.get(�......
  • django中使用redis
    django中使用redis方式一:通用方式pool.pyimportredisPOOL=redis.ConnectionPool(max_connections=10,decode_responses=True)在哪里用,导入用即可fromutils.poolimportPOOLimportredisclassRedisView(ViewSet):deflist(self,request):conn=......
  • mit6.828笔记 - lab3 Part A:用户进程和异常处理
    简单回顾在开始lab3的学习之前,我们先简单回顾下到目前为止,我们的内核能做了什么:lab1中,我们学习了PC启动的过程,看到BIOS将我们编写的bootloader载入内存,然后通过bootloader将内核载入内存。同时,使用了一个写死的临时页表(entry_pgdir)完成了简单的地址映射;我们的内核最后执......
  • mit6.828笔记 - lab3 Part B:页面故障、断点异常和系统调用
    PartB页面故障、断点异常和系统调用虽然说,我们故事的主线是让JOS能够加载、并运行user/hello.c编译出来的镜像文件。虽然说,经过PartA最后几节,我们初步实现了异常处理的基础设施。但是对于操作系统来说,还远远不够,比如说那个trap_dispatch还没完成。所以在回到故事主线之......
  • 国标GB28181协议EasyCVR视频汇聚平台获取设备录像仅展示部分片段的原因排查
    国标GB28181协议EasyCVR安防平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力,平台支持7*24小时实时高清视频监控,能同时播放多路监控视频流,视频画面1、4、9、16个可选,支持自定义......
  • 【django学习-24】自定义插件
    1.ModelForm可以帮助我们生成HTML标签,这种是普通的标签classUserModelForm(forms.ModelForm):classMeta:model=models.UserInfofields=["name","password",]form=UserModelForm()2.如果我们要使用bootstrap的标签,该怎么操作呢?2.1:自定义......