Django之单文件上传(以图片为例)

一,创建项目

初始化,数据迁移,创建superuser,创建app等

二,配置settings.py

1,配置数据库(本作者使用的mysql),以前文章有提到

2,配置静态文件存放路径

STATICFILES_DIRS=[ BASE_DIR / 'static' ]

3,配置媒体文件(即上传的文件)存放路径

复制代码
MEDIA_ROOT = BASE_DIR / 'static/uploads'

三,按照以下文件树创建文件(static和templates下的文件可自定义,但是这两个文件夹名字要和之前配置的相同)

四,编写html

在templates下创建html,文件名自定义,内容可参考如下:

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>单文件上传</title>
</head>
<body>
<h2>单文件上传</h2>
<hr>
<form action="" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <p>用户名:<input type="text" name="uname"></p>
    <p>头像:<input type="file" name="icon"></p>
    <p><button>上传</button></p>
</form>
</body>
</html>
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% load static %}
<h2>展示详情页</h2>
<hr>
<ul>
    <li>
        上传者:{{ name }}
    </li>
       
</ul>
 文件:<img src="{% static icon %}" alt="" width="300px">
</body>
</html>

五,创建model

python 复制代码
class upload(models.Model):
    name = models.CharField(max_length=30, unique=True)
    icon = models.CharField(max_length=255)

    def __str__(self):
        return self.name + self.icon

然数据迁移,注册model等

六,编写view

在创建的app的文件下的views.py中写函数,内容可参考如下:

python 复制代码
def upload1(request):
    if request.method == 'GET':
        return render(request, 'upload1.html')
    elif request.method == 'POST':
        uname = request.POST.get('uname')
        icon = request.FILES.get('icon')
        icon_name = str(uuid.uuid4())+ icon.name[icon.name.rfind('.'):]
        file_path = os.path.join(settings.MEDIA_ROOT, icon_name)
        with open(file_path,'ab') as fp:
            for part  in icon.chunks():
                    fp.write(part)
                    fp.flush()
        up = upload()
        up.name = uname
        up.icon = 'uploads/' + icon_name
        up.save()
        return render(request, 'detail.html', {'name':uname, 'icon':file_path})

七,启动项目

相关推荐
yj155837 分钟前
新房子装修好不能直接入住的原因有哪些?
python
luoluoal38 分钟前
基于python的病人信息管理系统及安全策略分析(源码+文档)
python·mysql·django·毕业设计·源码
程序员三明治2 小时前
【重学计网】TCP如何保证可靠传输?怎么保证可靠性?可靠传输的原理?
java·网络·后端·网络协议·tcp/ip·tcp·可靠传输
cnxy1888 小时前
围棋对弈Python程序开发完整指南:步骤1 - 棋盘基础框架搭建
开发语言·python
落叶,听雪8 小时前
河南建站系统哪个好
大数据·人工智能·python
上进小菜猪8 小时前
基于 YOLOv8 的驾驶员疲劳状态识别系统实战(含完整源码与可视化界面)
后端
上进小菜猪8 小时前
基于 YOLOv8 的交通标识与设施识别系统(含完整源码)
后端
极客小云9 小时前
【生物医学NLP信息抽取:药物识别、基因识别与化学物质实体识别教程与应用】
python·机器学习·nlp
南_山无梅落9 小时前
12.Python3函数基础:定义、调用与参数传递规则
python
程序员-周李斌9 小时前
Java 死锁
java·开发语言·后端