一:问题

当开启一个项目的时候,通常会遇到文件(图片,音频等)上传的需要,最常见的比如图片的上传,用户头像,后台管理添加图片,而图片的在是数据库中的存储主要是以该文件的相对路径,在django中可以使用media_url很好的管理上传文件。

二:操作

1、配置MEDIA_URL

Settings.py中配置上传信息

MEDIA_URL = '/media/'

# 设置上传文件的路径

MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # 指定根目录

2、数据库模型配置

在数据库相关模型models中写上image字段其中的一些属性可以帮助更好的标记文件,更好的跟踪文件上传。

比如:%Y代表年,%m代表月,blank=True代表可以为空。当上传文件时,代表上传到image目录下,以当前年月子目录的文件夹中。

class GoodsInfo(models.Model):

# 商品模型:gpic为该商品的图片在项目中存储的相对路径

gpic = models.ImageField(verbose_name="图片路径", default="image/default.png", upload_to='df_goods/image/%Y/%m', null=True, blank=True) # 商品图片

在修改数据库之后需要进行迁移

python manage.py makemigrations

python manage.py migrate

3、路由的配置

使用MEDIA_URL就需要重新添加一个新的路由来管理整个文件目录,处理文件上传

在路由系统url.py中添加相关的处理函数和路由

from django.views.static import serve # 上传文件处理函数

from .settings import MEDIA_ROOT # 从配置中导入MEDIA_ROOT

urlpatterns = [

url(r'^media/(?P.*)$', serve, {"document_root":MEDIA_ROOT})

]

4、模板的配置

因为之前在settings.py中直接进行了MEDIA_URL的相关配置,所以想在模板中使用{{MEDIA_URL}},就需要在setting.py中进行模板相关的配置,在“模板”的“context_processors”选项中添加django.template.context_processors.media。

TEMPLATES = [

{

'BACKEND': 'django.template.backends.django.DjangoTemplates',

'DIRS': [os.path.join(BASE_DIR, 'templates')],

'APP_DIRS': True,

'OPTIONS': {

'context_processors': [

'django.template.context_processors.debug',

'django.template.context_processors.request',

'django.contrib.auth.context_processors.auth',

'django.contrib.messages.context_processors.messages',

# 下面为添加

'django.template.context_processors.media', # 将media_url上传文件路径注册到模板中

],

},

},

]

通过以上步骤,基本上可以在前端正常渲染出结果了,但还需要给图片添加一个URL以正常显示。

其中{{ goods.gpic }}为商品的路径

而经渲染之后,在浏览器中就正常显示为

也就是说MEDIA_ROOT在模板中显示其实就是/media/

三:效果

1、上传文件目录

当第一次从上传文件的时候会在项目路径下生成一个media目录,而之后每一次上传,都会根据日期来生成新的子目录或者直接添加到已存在的目录

2、数据库

在数据库中存储的是每一个文件的相对路径,只跟字段的up_load属性有关。

另外一旦文件目录混乱,或者数据库受损,就会造成文件不显示的问题,所以添加一个默认的字段属性default设置默认值是很有必要的。

django 设置媒体url_django-文件上传Media url的配置相关推荐

  1. 上传文件到服务器地址怎么配置,文件上传到服务器怎么配置

    文件上传到服务器怎么配置 内容精选 换一换 模型准备以昇腾模型压缩工具的安装用户将需要量化的TensorFlow模型上传到Linux服务器任意目录下.本章节以sample自带的yolov3/pre_m ...

  2. django中的Ajax文件上传

    主要介绍两个 1.ajax文件上传 2.写路由器 3.创建对应的函数 4.file_put.html代码 <!DOCTYPE html> <html lang="en&qu ...

  3. php swfupload handlers.js,SWFUpload 文件上传插件常用的配置讲解

    上传文件swfUpload 插件: 基本的文件上传涉及到的四个文件  (还有一个处理数据的php文件  这里没有涉及到) html页面: upload_window.html js文件: swfupl ...

  4. nginx 上传 文件超时设置_Nginx大文件上传413和500问题排查总结

    背景 前几天上传一个300MB的文件,发现报错,这里说明一下,用户的请求会通过Nginx代理(负载均衡)到应用服务器. 413问题解决 错误信息为"413 Request Entity To ...

  5. Django,Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传

    JSON JSON指的是JavaScript对象方法(JavaScript Object Notation) JSON是轻量级的文本数据交换格式 JSON独立于语言 JSON具有自我i描述,更易理解 ...

  6. django 设置媒体url_Django设置网站地图sitemap

    1.安装 安装Sitemap APP的步骤如下: 在INSTALLED_APPS设置中添加'django.contrib.sitemaps'; 确认你的TEMPLATES设置中包含DjangoTemp ...

  7. .NET文件上传的大小限制配置

    <system.web>   <!--maxRequestLength单位是Kb-->   <httpRuntime maxRequestLength="209 ...

  8. WebUploader 设置单个文件上传

    1.导入控件样式文件 <link rel="stylesheet" type="text/css" href="__PUBLIC__/stati ...

  9. django文件——django + jquery-file-upload上传篇(二)-- 插件实现文件上传+进度条显示 +拖入文件上传...

    django + jquery-file-upload 插件实现文件上传+进度条显示 1.model.py class Fujian(models.Model):name = models.CharF ...

  10. bootstrap3 文件上传插件fileinput中文说明文档

    file input插件功能如此强大,样式非常美观,并且支持上传文件预览,ajax同步或异步上传,拖曳文件上传等炫酷的功能,完全没有理由不去使用,但是国内很少能找到本插件完整的使用方法,于是本人去其官 ...

最新文章

  1. 李宏毅机器学习笔记(二)-------Why we need learn Machine Learning?
  2. jquery的html,text,val的区别
  3. https原理:证书传递、验证和数据加密、解密过程解析 (转)
  4. Python+Matplotlib制作动画
  5. java jar 没有主清单属性_Spring Boot jar中没有主清单属性的解决方法
  6. C#查找指定窗口的子窗口的句柄
  7. The 10th Shandong Provincial Collegiate Programming Contest 2019山东省赛游记+解题报告
  8. NTFS-3G的安装和配置(Linux下挂载Windows分区必备)
  9. IPTV码流分析指标
  10. python离线翻译软件哪个好用_哪个翻译软件最好用?
  11. QQ跳转浏览器php代码,QQ微信域名预防封禁强制跳转至浏览器打开PHP源代码下载...
  12. Xcode里的-ObjC,-all_laod和-force_load的作用
  13. 零基础学习Java会不会很吃力?
  14. 6名嫌犯兜卖假苹果手机遭拒改硬抢
  15. Jetbot小车系列文章学习
  16. NumberPicker
  17. Go语言圣经 - 第11章 测试 - 11.1 go test 11.2 测试函数
  18. reflections歌词翻译_reflections歌词 reflectionsLrc歌词
  19. vm fusion Linux系统克隆
  20. JavaSE知识点(1)

热门文章

  1. MMORPG游戏服务器技术选型参考
  2. 笔记本电脑无线Wifi热点设置工具
  3. xpwifi热点设置android,笔记本xp系统wifi热点设置教程(图文)
  4. 京东HBase平台进化与演进
  5. 怎样计算两个文本的Rougel,Bleu评价指标
  6. SSL协议与Nginx安装SSL模块和ssl证书
  7. 注册了DELPHI盒子
  8. 原子弹级别牛股发动机指标软件开发收获
  9. DGL系列之(二):使用DGL实现GCN
  10. asterisk注册河南联通ims