django 文件上传功能的相关实例代码(简单易懂)


Posted in Python onJanuary 22, 2020

一、新建项目,在主配置文件中,修改以下内容:

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/ 可以看到界面效果,如下:

django 文件上传功能的相关实例代码(简单易懂)

输入之后点击提交,数据就会被实时保存在数据库中,不过要记得在数据库中 file 字段保存的其实是文件的路径信息,是一个字符串。

同时,该文件也会保存在刚才创建的upload文件夹下。

可以尝试添加更多内容,比如在提交成功之后返回一个效果页面等。

总结

以上所述是小编给大家介绍的django 文件上传功能的相关实例代码,希望对大家有所帮助!

Python 相关文章推荐
python如何查看系统网络流量的信息
Sep 12 Python
wxPython色环电阻计算器
Nov 18 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
Jan 10 Python
python ubplot使用方法解析
Jan 10 Python
Python xlwt模块使用代码实例
Jun 10 Python
如何在Win10系统使用Python3连接Hive
Oct 15 Python
Django haystack实现全文搜索代码示例
Nov 28 Python
python如何发送带有附件、正文为HTML的邮件
Feb 27 Python
pytorch中的numel函数用法说明
May 13 Python
Python数据分析入门之数据读取与存储
May 13 Python
Python基本的内置数据类型及使用方法
Apr 13 Python
python 镜像环境搭建总结
Sep 23 Python
python动态文本进度条的实例代码
Jan 22 #Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
Jan 22 #Python
使用Python实现Wake On Lan远程开机功能
Jan 22 #Python
python定义类self用法实例解析
Jan 22 #Python
通过实例解析python描述符原理作用
Jan 22 #Python
python基于property()函数定义属性
Jan 22 #Python
Python @property装饰器原理解析
Jan 22 #Python
You might like
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
Js 中debug方式
2010/02/07 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
JavaScript原生对象之Number对象的属性和方法详解
2015/03/13 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
jQuery webuploader分片上传大文件
2016/11/07 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
详解JavaScript的变量
2019/04/04 Javascript
vue v-for 使用问题整理小结
2019/08/04 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
详解element-ui 表单校验 Rules 配置 常用黑科技
2020/07/11 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
简单介绍Python中的JSON使用
2015/04/28 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
Django配置celery(非djcelery)执行异步任务和定时任务
2018/07/16 Python
Python异常处理机制结构实例解析
2020/07/23 Python
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
婴儿地球:Baby Earth
2018/12/25 全球购物
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
What is view? why do we have view?
2012/06/22 面试题
优质的学校老师推荐信
2013/10/28 职场文书
数控专业个人求职信范例
2013/11/29 职场文书
决心书范文
2014/03/11 职场文书
介绍信范文
2015/01/31 职场文书
兴趣班停课通知
2015/04/24 职场文书
单方投资意向书
2015/05/11 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
2021/09/25 Java/Android
python小型的音频操作库mp3Play
2022/04/24 Python