django图片上传与显示,Django上传文件

  django图片上传与显示,Django上传文件

  很多时候我们要用到图片上传功能,如果图片一直用放在别的网站上,通过加载网址的方式来显示的话其实也挺麻烦的,我们通过使用姜戈-菲勒这个模块实现将图片文件直接放在自己的网站上。

  1.使用pip安装

  pipinstalldjango-filer这个模块需要姜戈-mptt,简易_缩略图,姜戈-多态以及枕头这些依赖包,不过安装姜戈-菲勒的时候点都会自动帮我们装好这些。

  2. django-filer 配置。

  在settings.py中加入以下内容:

  INSTALLED_APPS=[

  #图片上传模块姜戈-菲勒

  简易_缩略图,

  文件管理器,

   mptt ,

  ]

  #支持视网膜高分辨率设备

  缩略图_高分辨率=真

  #处理缩列图

  缩略图_处理器=(

  轻松_缩略图。处理器。颜色空间,

  轻松_缩略图。处理器。自动裁剪,

  filer。缩略图_处理器。scale _ and _ crop _ with _ subject _ location ,

  轻松_缩略图。处理器。过滤器,

  )

  #存放图片文件夹设置

  FILER_STORAGES={

  公共 :{

  main:{

  引擎:英尺过滤器。存储。公共文件系统存储,

  选项 :{

  位置 : 项目路径/介质/文件服务器,

  base_url:/media/filer/,

  },

  上传到“:”文件服务器。utils。生成文件名。随机化,

  上传至前缀:filer_public ,

  不间断空格

  ;},

  'thumbnails':{

  'ENGINE':'filer.storage.PublicFileSystemStorage',

  'OPTIONS':{

  'location':'项目路径/media/filer_thumbnails',

  'base_url':'/media/filer_thumbnails/',

  },

  },

  },

  'private':{

  'main':{

  'ENGINE':'filer.storage.PrivateFileSystemStorage',

  'OPTIONS':{

  'location':'项目路径/smedia/filer',

  'base_url':'/smedia/filer/',

  },

  'UPLOAD_TO':'filer.utils.generate_filename.randomized',

  'UPLOAD_TO_PREFIX':'filer_public',

  },

  'thumbnails':{

  'ENGINE':'filer.storage.PrivateFileSystemStorage',

  'OPTIONS':{

  'location':'项目路径/smedia/filer_thumbnails',

  'base_url':'/smedia/filer_thumbnails/',

  },

  },

  },

  }

  #指定MEDIA_URL的位置

  MEDIA_URL='/media/'

  MEIDA_ROOT='项目路径/media/'在上述设置中,location 是文件真正存放的文件夹地址,而 base_url 是显示时要指定的静态文件网址。

  在 urls.py 中加入以下程序代码,才能把上传的图像文件当在静态文件处理:

  

fromdjango.confimportsettingsfromdjango.conf.urls.staticimportstatic

上述设置完成后,同步数据库./manage.py migrate,让模块加上需要的数据表。执行./manage.py collectstatic,刷新静态文件,加载 django-filer 自己的 CSS 和 Javascript 文件。我们便能在 admin 管理页面看到多出的两个数据表。

 

  接着我们就可以在 Folders 数据表中进行新建文件夹,上传文件以及删除文件夹和文件等操作。

  3. 把 django-filer 的图像文件添加到数据表中

  使用 filer 模块提供的 FilerImageField 字段,将上传图像文件的功能整合到建立的数据项中。

  在 models.py 文件中添加:

  

fromfiler.fields.imageimportFilerImageField

并将需要放置图片的数据表中的 image 变量改为:

 

  

image=FilerImageField(related_name='product_image')

删除 migrations 下除 __init__.py 的其他文件和 db.sqlite3 文件,重新执行 ./manage.py makemigrations 和 ./manage.pymigrate ,刷新 admin 管理页面,进入 image 字段的数据项,便可以看到 image 字段多了上传文件的功能。

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: