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进阶教程之词典、字典、dict
Aug 29 Python
Python中使用PIPE操作Linux管道
Feb 04 Python
Python3使用requests发闪存的方法
May 11 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
Jun 13 Python
R语言 vs Python对比:数据分析哪家强?
Nov 17 Python
使用Python 正则匹配两个特定字符之间的字符方法
Dec 24 Python
python仿抖音表白神器
Apr 08 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
Oct 22 Python
python 利用opencv实现图像网络传输
Nov 12 Python
Django中如何用xlwt生成表格的方法步骤
Jan 31 Python
Python 如何实现文件自动去重
Jun 02 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中取得URL的根域名的代码
2011/03/23 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
php实现从上传文件创建缩略图的方法
2015/04/02 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
php提供实现反射的方法和实例代码
2019/09/17 PHP
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
document.write的几点使用心得
2014/05/14 Javascript
JavaScript判断文件上传类型的方法
2014/09/02 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
Function.prototype.apply()与Function.prototype.call()小结
2016/04/27 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
详解Angular5 服务端渲染实战
2018/01/04 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
[01:03:36]Ti4 循环赛第三日DK vs Titan
2014/07/12 DOTA
[03:12]2016完美“圣”典风云人物:单车专访
2016/12/02 DOTA
Python编程之event对象的用法实例分析
2017/03/23 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
补充协议书范本
2014/04/23 职场文书
2015年防汛工作总结
2015/05/15 职场文书
任命书格式模板
2015/09/22 职场文书