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的Flask框架中@app.route的用法教程
Mar 31 Python
Python中用format函数格式化字符串的用法
Apr 08 Python
Python实现ssh批量登录并执行命令
Oct 25 Python
详解Python各大聊天系统的屏蔽脏话功能原理
Dec 01 Python
python web基础之加载静态文件实例
Mar 20 Python
python判断完全平方数的方法
Nov 13 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
Jan 16 Python
python实现Pyecharts实现动态地图(Map、Geo)
Mar 25 Python
Python使用monkey.patch_all()解决协程阻塞问题
Apr 15 Python
python3检查字典传入函数键是否齐全的实例
Jun 05 Python
Python实现Keras搭建神经网络训练分类模型教程
Jun 12 Python
Django rest framework分页接口实现原理解析
Aug 21 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
BBS(php &amp; mysql)完整版(五)
2006/10/09 PHP
php 生成短网址原理及代码
2014/01/23 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
javascript 函数调用规则
2009/08/26 Javascript
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
jquery实现table鼠标经过变色代码
2013/09/25 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
javascript实现的猜数小游戏完整实例代码
2016/05/10 Javascript
JavaScript实现图片懒加载(Lazyload)
2016/11/28 Javascript
vue修改vue项目运行端口号的方法
2017/08/04 Javascript
Vue-cli项目获取本地json文件数据的实例
2018/03/07 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
JS监听事件的叠加和移除功能
2018/11/19 Javascript
详解puppeteer使用代理
2018/12/27 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
简单介绍Python中的round()方法
2015/05/15 Python
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
python抓取网页中链接的静态图片
2018/01/29 Python
香港化妆品经销商:我的公主
2016/08/05 全球购物
荷兰优雅女装网上商店:Heine
2016/11/14 全球购物
Ticketmaster德国票务网站:购买音乐会和体育等门票
2016/11/14 全球购物
香蕉共和国工厂店:Banana Republic Factory
2018/06/09 全球购物
后勤人员自我评价怎么写
2013/09/19 职场文书
外贸业务员的岗位职责
2013/11/23 职场文书
教师网络培训感言
2014/03/09 职场文书
幼儿园健康教育方案
2014/06/14 职场文书
2014年人事科工作总结
2014/11/19 职场文书
乡镇团委工作总结2015
2015/05/26 职场文书
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL