这篇文章主要介绍了django上传图片的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

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

1.使用pip安装

pipinstalldjango-filer

这个模块需要 django-mptt, easy_thumbnails, django-polymorphic 以及 pillow 这些依赖包, 不过安装django-filer的时候 pip 都会自动帮我们装好这些。

2. django-filer 配置。

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

INSTALLED_APPS=[#图片上传模块django-filer'easy_thumbnails','filer','mptt',]#支持视网膜高分辨率设备THUMBNAIL_HIGH_RESOLUTION=True#处理缩列图THUMBNAIL_PROCESSORS=('easy_thumbnails.processors.colorspace','easy_thumbnails.processors.autocrop','filer.thumbnail_processors.scale_and_crop_with_subject_location','easy_thumbnails.processors.filters',)#存放图片文件夹设置FILER_STORAGES={'public':{'main':{'ENGINE':'filer.storage.PublicFileSystemStorage','OPTIONS':{'location':'项目路径/media/filer','base_url':'/media/filer/',},'UPLOAD_TO':'filer.utils.generate_filename.randomized','UPLOAD_TO_PREFIX':'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.staticimportstaticurlpatterns=[#othersurls...url(r'^files/',include('filer.urls')),#...]urlpatterns+=static(settings.MEDIA_URL,document_root=settings.MEIDA_ROOT)

上述设置完成后,同步数据库./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 字段多了上传文件的功能。

感谢你能够认真阅读完这篇文章,希望小编分享django上传图片的方法内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!