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程序中访问Java类的简单示例
Apr 20 Python
Python写入数据到MP3文件中的方法
Jul 10 Python
python代码实现ID3决策树算法
Dec 20 Python
Python获取CPU、内存使用率以及网络使用状态代码
Feb 08 Python
Django文件存储 默认存储系统解析
Aug 02 Python
Python数据可视化:箱线图多种库画法
Nov 06 Python
python脚本后台执行方式
Dec 21 Python
python itsdangerous模块的具体使用方法
Feb 17 Python
python实现俄罗斯方块游戏(改进版)
Mar 13 Python
Python sklearn中的.fit与.predict的用法说明
Jun 28 Python
Python机器学习工具scikit-learn的使用笔记
Jan 28 Python
python模拟浏览器 使用selenium进入好友QQ空间并留言
Apr 12 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
将php数组输出html表格的方法
2014/02/24 PHP
php CI框架插入一条或多条sql记录示例
2014/07/29 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
php常见的魔术方法详解
2014/12/25 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
js获取图片长和宽度的代码
2009/11/24 Javascript
jQuery DOM操作小结与实例
2010/01/07 Javascript
关于JS控制代码暂停的实现方法分享
2012/10/11 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
javascript与Python快速排序实例对比
2015/08/10 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
angularjs创建弹出框实现拖动效果
2020/08/25 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
2019/04/26 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
pytorch 模拟关系拟合——回归实例
2020/01/14 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
Kent & Curwen:与大卫·贝克汉姆合作
2017/06/13 全球购物
自荐信不宜过于夸大
2013/11/06 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
开工典礼策划方案
2014/05/23 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
高中政治教学反思
2016/02/23 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers