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中使用动态变量名的方法
May 06 Python
python多线程操作实例
Nov 21 Python
Python全局变量操作详解
Apr 14 Python
python通过文件头判断文件类型
Oct 30 Python
Python 常用string函数详解
May 30 Python
python实现简单遗传算法
Mar 19 Python
Python ATM功能实现代码实例
Mar 19 Python
利用python生成照片墙的示例代码
Apr 09 Python
零基础小白多久能学会python
Jun 22 Python
python下载的库包存放路径
Jul 27 Python
详解python算法常用技巧与内置库
Oct 17 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 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
Smarty中的注释和截断功能介绍
2015/04/09 PHP
php 运算符与表达式详细介绍
2016/11/30 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
javascript实现微信分享
2014/12/23 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
AngularJS入门教程之Helloworld示例
2016/12/25 Javascript
jquery Ajax 全局调用封装实例详解
2017/01/16 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
基于vue实现分页效果
2017/11/06 Javascript
微信打开网址添加在浏览器中打开提示的办法
2019/05/20 Javascript
JS实现返回上一页并刷新页面的方法分析
2019/07/16 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
OpenLayers3实现测量功能
2020/09/25 Javascript
[04:49]2014DOTA2国际邀请赛 Newbee顺利挺进总决赛 ImbaTV独家专访
2014/07/19 DOTA
跟老齐学Python之再深点,更懂list
2014/09/20 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
python图像常规操作
2017/11/11 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
python实现维吉尼亚算法
2019/03/20 Python
Python控制台实现交互式环境执行
2020/06/09 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
HTML5中如何显示视频呢 HTML5视频播放demo
2013/06/08 HTML / CSS
高中毕业生自我鉴定
2013/11/03 职场文书
医院员工辞职信范文
2015/05/12 职场文书
2015年党风廉政建设个人总结
2015/08/18 职场文书
2015年乡镇食品安全工作总结
2015/10/22 职场文书
2016新党章学习心得体会
2016/01/15 职场文书
详解MySQL的Seconds_Behind_Master
2021/05/18 MySQL