django 文件上传功能的相关实例代码(简单易懂)
作者:二十七º 发布时间:2023-01-14 03:51:17
一、新建项目,在主配置文件中,修改以下内容:
ALLOWED_HOSTS = ['127.0.0.1','localhost']
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), MEDIA_ROOT]
在该项目下新建一个与 manage.py 同级的目录文件,目录名为media。
在media文件夹下新建一个子目录,作为上传文件的保存位置,这里我把该子目录命名为headpics。即模拟保存用户选择的头像文件。
二、新建APP(这里我把该app命名为uploadFile)
执行如下命令将创建app:
python manage.py startapp uploadFile
在uploadFile下的models.py文件下,粘贴如下代码:
from django.db import models
class User(models.Model):
name = models.CharField(max_length=12)
file = models.FileField(upload_to='headpics')
不要忘了在主配置文件的 INSTALLED_APPS 列表 * 册该app。
然后在控制台执行如下命令:
python manage.py makemigrations uploadFile
python manage.py migrate uploadFile
三、编写路由
在主路由模块下粘贴如下代码:
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('index/',include("uploadFile.urls")),
]
admin 是pycharm自动添加的,不需要的话可以删去。
然后在uploadFile下新建urls.py模块,即编写二级路由。
在二级路由下粘贴如下代码:
from django.urls import path
from . import views
app_name = 'upload'
urlpatterns = [
path('file/',views.userfile,name='userfile'),
path('file/detail/',views.detailFile,name='delfile'),
]
四、编写视图函数
在uploadFile的views.py文件下粘贴如下代码:
from django.shortcuts import render,get_object_or_404
from django.http import HttpResponse
import uuid,os
from .models import User
# Create your views here.
def userfile(request):
return render(request,'uploadFile/uploadFile.html')
def detailFile(request):
if request.method == "POST":
name = request.POST.get('name')
file = request.FILES.get('file',None)
if not file:
return HttpResponse("<p>您还未上传头像!</p>")
file.name = getUUID(file.name)
user = User.objects.create(name=name, file=file)
with open(os.path.join("D:\\upload",file.name),'wb+') as relfile:
for crunk in file.chunks():
relfile.write(crunk)
return HttpResponse("<p>上传成功!</p>")
else:
pass
def getUUID(filename):
id = str(uuid.uuid4())
extend = os.path.splitext(filename)[1]
return id+extend
五、编写模板
在uploadFile下新建一个叫做templates的目录,在该目录下再新建一个叫做uploadFile的子目录,在该子目录下再新建一个叫做uploadFile的html文件。
在该html文件内粘贴如下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>upload</title>
</head>
<body>
<form action="{% url 'upload:delfile' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
昵称 :<input type="text" name="name"><br><br>
头像 : <input type="file" name="file"><br><br>
<input type="submit" value="提交">
</form>
</body>
</html>
大功告成!
运行之后,在浏览器 输入 http://127.0.0.1:8000/index/file/ 可以看到界面效果,如下:
输入之后点击提交,数据就会被实时保存在数据库中,不过要记得在数据库中 file 字段保存的其实是文件的路径信息,是一个字符串。
同时,该文件也会保存在刚才创建的upload文件夹下。
可以尝试添加更多内容,比如在提交成功之后返回一个效果页面等。
总结
以上所述是小编给大家介绍的django 文件上传功能的相关实例代码,希望对大家有所帮助!
来源:https://blog.csdn.net/ckk727/article/details/104062238


猜你喜欢
- 在学习与运用ASP中,response对象涉及到的方面也比较多,想全部都掌握也并非一两天的事,我也是最近才发现response对象中居然有这
- PHP天然就对MySQL有良好的支持,但是想要用PHP对SQL Server进行操作,则需要花点时间了。今天刚好团队里的一个项目需要用PHP
- 线程池线程池的创建 - concurrentconcurrent 是 Python 的内置包,使用它可以帮助我们完成创建线程池的任
- 概要基于 golang Gin 框架开发 web 服务时, 需要时不时的 go build , 然后重启服务查看运行结果.go build
- 一键执行虚拟机一键安装python3.8环境,只需将网络适配器改为nat模式即可(确保主机能够上网),随后将tar包放入/root目录下,执
- 如果你有 express ,koa, redux 的使用经验,就会发现他们都有 中间件(middlewares)的概念,中间件 是一种 *
- 本文主要介绍如何对多个文本进行读取,并采用正则表达式对其中的信息进行筛选,将筛选出来的信息存写到一个新文本。文本基础操作打开文件:open(
- 通过手动输入数据,将数据分成几部分存入数组中import osimport sysdef test(): bric
- 对于在外的游子,每逢佳节倍思亲。而对于996ICU的苦逼程序猿们,最期待的莫过于各种节假日能把自己丢在床上好好休息一下了。这几天各公司都陆续
- 如下所示:# -*- coding:utf-8 -*-class Solution: # matrix类型为二维列表,需要返回列
- 队列是一种只允许在一端进行插入操作,而在另一端进行删除操作的线性表。在Python文档中搜索队列(queue)会发现,Python标准库中包
- 刚刚接触爬虫,基础的东西得时时回顾才行,这么全面的帖子无论如何也得厚着脸皮转过来啊!什么是 Urllib 库?urllib 库 是 Pyth
- 前言今天继续为大家更新Go语言学习记录的文章。首先说明pointer指针和switch是两个并没有直接关系的知识点,放在一篇文章中将的原因是
- 在编程过程中,我们常常需要用到字符串与其它类型的转换,strconv包可以帮我们实现此功能。1.string -> int使用方法:f
- 问题你希望自己的程序能生成警告信息(比如废弃特性或使用问题)。解决方案要输出一个警告消息,可使用 warning.warn() 函数。例如:
- 网站设计似乎朝着越来越复杂的方向发展。这部分源于显示器的逐步增大,随着宽屏显示器的增多,更有加剧网站页面复杂程度的趋势。但是我接触网站设计近
- 首先安装对应的python模块$ pip install pyecharts==0.5.10$ pip install echarts-co
- 本文实例讲述了Python 面向对象静态方法、类方法、属性方法知识点。分享给大家供大家参考,具体如下:(1)静态方法--》-@staticm
- 一:图形界面安装 1、打开Anconda2、点击Environment3、将Installed点击为Not installed4、搜索dja
- 本文实例讲述了python用10行代码实现对 * 的检测功能。分享给大家供大家参考。具体如下:原理:将图片转换为YCbCr模式,在图片中寻