开发实践7_文件上传

以下学习 朔宁夫 开发课(Python)。

文件上传&表单类

一 Django文件上传

表单上传。

前端:表单设置 

enctype = "multipart/form-data"

后端:获取上传文件对象

upload_dile = request.FILES.get("文件域名称")

后端:分块写入服务器

for chunk in upload_file.chunks():

        目标文件.write(chunk)

演示:

python manage.py startapp upload_app

setting // installed_apps

total urls // path('upload_app/', include('upload_app.urls', namespace='upload')),

sub urls // 

app_name = "upload"urlpatterns = [path("upload/", upload_view, name="up"),]

template //

<form action="{% url 'upload:up' %}" method="post" enctype="multipart/form-data">{% csrf_token %}Upload file: <br><input type="file" name="a_file"><br><input type="submit" value="UPLOAD">
</form>

views //

def upload_view(request):#BASE_DIR = 'D:/webDevelopment/exercises/djangoProject'if request.method == "GET":return render(request, "upload.html")if request.method == "POST":upload_obj = request.FILES.get("a_file")file_name = str(int(time.time()) * 1000) + upload_obj.name#path = os.path.join(BASE_DIR, "/upload_files", upload_obj.name)  # , file_namepath = os.path.join('D:/webDevelopment/exercises/djangoProject/upload_files', file_name)print(path)with open(path, 'wb') as f:for chunk in upload_obj.chunks():f.write(chunk)print('flag_up_w')data = {"msg": "Data Uploaded."}return JsonResponse(data)

# 上传同名文件会覆盖。加入时间戳可。

admin 上传:

class Anime(models.Model):name = models.CharField(max_length=32, verbose_name='figure name')impress = models.FloatField(verbose_name="index")#  img = models.FilePathField()img = models.ImageField(verbose_name="img")class Meta:verbose_name = "figure"verbose_name_plural = verbose_namedef __str__(self):return self.name

#注册

models = [Anime,
]admin.site.register(models)setting //
MEDIA_ROOT = os.path.join(BASE_DIR, "upload_files")
MEDIA_URL = '/media/'

二 表单类

简化编码。使用步骤:继承→自定义类属性→调用→模板渲染。

app下form.py //

from django import formsclass RegisterForm(forms.Form):reg_name = forms.CharField(max_length=10, label="user_name")reg_pwd = forms.CharField(max_length=20, label="pwd", widget=forms.PasswordInput())  # 组件reg_home = forms.ChoiceField(label="area", choices=((1, 'alive'), (2, 'dead'), (3, 'walk_dead')))gender = forms.ChoiceField(label='gender', choices=((1, 'Female'), (2, 'Male')), widget=forms.RadioSelect())

views //

def form_view(request):if request.method == "GET":form = RegisterForm()return render(request, "form.html", locals())if request.method == "POST":form = RegisterForm(request.POST)if form.is_valid():name = form.cleaned_data["reg_name"]home = form.cleaned_data["reg_home"]gender = form.cleaned_data["gender"]data = {"name": name,"home": home,"gender": gender,}return JsonResponse(data)else:return JsonResponse({"msg": "Fail"})

template //

<form action="{% url 'upload:reg' %}" method="post">{% csrf_token %}{{ form.as_p }}<input type="submit" value="register">
</form>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/630329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《数据结构、算法与应用C++语言描述》-红黑树的C++实现-百万级数据量测试通过

红黑树 完整可编译运行代码见仓库&#xff1a;GitHub - Jasmine-up/Data-Structures-Algorithms-and-Applications/_35Red black tree。 如有问题请在评论区指出。另外&#xff0c;Github仓库会根据我的学习情况持续更新&#xff0c;欢迎大家点star&#xff0c;谢谢。 基本概…

【LeetCode】151. 反转字符串中的单词(中等)——代码随想录算法训练营Day08

题目链接&#xff1a;151. 反转字符串中的单词 题目描述 给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 …

【卡码网】55. 右旋转字符串——代码随想录算法训练营Day08

题目链接&#xff1a;55. 右旋转字符串 题目描述 字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k&#xff0c;请编写一个函数&#xff0c;将字符串中的后面 k 个字符移到字符串的前面&#xff0c;实现字符串的右旋转操作…

YOLOv8改进 | 主干篇 | 低照度增强网络PE-YOLO改进主干(改进暗光条件下的物体检测模型)

一、本文介绍 本文给大家带来的改进机制是低照度图像增强网络PE-YOLO中的PENet,PENet通过拉普拉斯金字塔将图像分解成多个分辨率的组件,增强图像细节和低频信息。它包括一个细节处理模块(DPM),用于通过上下文分支和边缘分支增强图像细节,以及一个低频增强滤波器(LEF),…

力扣909. 蛇梯棋

广度优先搜索 动态规划 思路&#xff1a; 定义 pair {id, step} 为到达格子编号 id&#xff0c;使用的步数 step&#xff0c;记作 step[id]&#xff1b;记录下所摇骰子 1 - 6 到达的格子编号 next&#xff0c;step[next] step[id] 1&#xff1a; 走了 1 步&#xff0c;所能…

指纹浏览器为什么要搭配代理IP?如何选择?

跨境电商无论是店群模式还是社媒矩阵运营&#xff0c;都必须涉及管理多个社媒/电商帐户的动作&#xff0c;但这很容易引发网站怀疑并最终被批量封号。使用指纹浏览器浏览器的主要目的是通过创建新的浏览器指纹来隐藏用户的真实浏览器指纹。 但浏览器指纹并不是网站关注的唯一…

ELK之Filebeat安装配置及日志抓取

一、Filebeat是什么 轻量型日志采集器 无论您是从安全设备、云、容器、主机还是 OT 进行数据收集,Filebeat 都将为您提供一种轻量型方法,用于转发和汇总日志与文件,让简单的事情不再繁杂。 Filebeat 随附可观测性和安全数据源模块,这些模块简化了常见格式的日志的收集、解…

边缘计算发展的瓶颈

上次我们讨论了边缘计算&#xff0c;并用无人零售和边缘计算的例子&#xff0c;说明了边缘计算的便利性。 但是边缘计算&#xff0c;也有很多限制。 硬件资源限制 边缘设备通常具有有限的计算、存储和网络资源。这种资源限制使得在处理大量数据或执行复杂任务时&#xff0c;…

Qt/QML编程之路:Grid、GridLayout、GridView、Repeater(33)

GRID网格用处非常大,不仅在excel中,在GUI中,也是非常重要的一种控件。 Grid 网格是一种以网格形式定位其子项的类型。网格创建一个足够大的单元格网格,以容纳其所有子项,并将这些项从左到右、从上到下放置在单元格中。每个项目都位于其单元格的左上角,位置为(0,0)。…

Nsis常量的使用

常量定义 !define 常量名 常量值 使用 ${常量名} 作用 常量可与字符串拼接使用 实例 !define EXENAME "Test" OutFile "${EXENAME}.exe" #常量与字符串拼接使用 Section SectionEnd

What is `DOM注入攻击` does?

DOM&#xff08;Document Object Model&#xff09;注入攻击&#xff0c;也称为DOM型跨站脚本&#xff08;DOM-based XSS, 或简称DXSS&#xff09;&#xff0c;是一种特殊的跨站脚本攻击方式。不同于传统的存储型XSS或反射型XSS&#xff0c;DOM注入攻击的关键在于客户端JavaScr…

电脑DIY-显卡

显卡 显卡代号前缀英伟达&#xff08;NVIDIA&#xff09;RTX系列实时光线追踪的基本原理DLSS技术的基本原理 显卡代号前缀 前缀品牌首次发布时间定位适用人群主流产品GTNVIDIA2006年较低性能办公用户、轻度游戏GT 1030GTXNVIDIA2008年高性能游戏玩家、图形设计师GTX 1080 TiRT…

qt 扫码枪扫描 输入事件 包含可输入字符

原因说明 当需要对扫码枪扫描出的信息进行处理或打印等&#xff0c;有多个办法&#xff0c;其中串口&#xff0c;中间件等不在本文章讨论内。如果在网上搜索相对于解决办法&#xff0c;发现有大多数都是对输入事件进行处理&#xff0c;但在没有找到好的处理之后&#xff0c;作…

【Docker】Dockerfile构建最小镜像

&#x1f973;&#x1f973;Welcome 的Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Docker的相关操作吧 目录 &#x1f973;&#x1f973;Welcome 的Huihuis Code World ! !&#x1f973;&#x1f973; 前言 一.Dockerfile是什么 二.Dock…

【算法】队列+bfs算法 解决树的相关算法题(C++)

文章目录 1. 前言2. 算法题429.N叉树的层序遍历103.二叉树的锯齿形层序遍历662.二叉树最大宽度515.在每个树行中找最大值 1. 前言 队列 与 宽度优先算法&#xff08;BFS&#xff09;是解决很多算法问题的常见工具。 BFS通过逐层遍历图或树的节点来寻找解决问题的最短路径或最…

【idea】idea插件编写教程,博主原创idea插件已上架idea插件市场 欢迎下载

前言&#xff1a;经常使用Objects.equals(a,b)方法的同学 应该或多或少都会因为粗心而传错参&#xff0c; 例如日常开发中 我们使用Objects.equals去比较 status(入参)&#xff0c;statusEnum(枚举), 很容易忘记statusEnum.getCode() 或 statusEnum.getVaule() &#xff0c;再比…

C++ 多条件比较的几种实现方式

文章目录 1 sort()使用自定义比较器1.1 在类内部定义比较器 -- 声明为静态成员函数1.2 在函数内部定义比较器 -- lamda表达式1.3 全局函数比较器 2 重载运算符<2.1 在结构体中重载运算符<2.2 在类中重载运算符< 3 重写仿函数bool operator()4 使用pair排序5 priority_…

IPO:动力电池行业变天,不生产电芯的幂源科技为何也要卷?

幂源科技的真正角色&#xff0c;是月老&#xff1f; 最近&#xff0c;动力电池正处于市场重构阶段。一边是供给端动力电池产能过剩&#xff0c;一边是需求端新能源车企加码电池自研。供需不匹配孕育出了新机遇&#xff0c;产业链的连接者与赋能者成为市场所需。而幂源科技控股…

学生用台灯哪个品牌比较好?口碑最好的护眼台灯推荐

台灯是现在很多朋友都在使用的照明灯具&#xff0c;对于晚上工作学习、看书休闲都有很大的裨益&#xff0c;但是选择台灯也注重护眼效果&#xff0c;在此基础上才是讨论性价比的问题&#xff0c;如果光线让人眼不舒适&#xff0c;那么多便宜的台灯都不划算。 ● 怎样的护眼台灯…

基于FPGA的万兆以太网学习(1)

万兆(10G) 以太网测速视频:FPGA 实现UDP万兆以太网的速度测试 1 代码结构 2 硬件需求 SFP+屏蔽笼可以插入千兆或万兆光模块。SFP+信号定义与 SFP 一致。 3 Xilinx IP 10 Gigabit Ethernet Subsystem IP说明 文章链接: Xilinx IP 10 Gigabit Ethernet Subsystem IP 4 E…