使用FileField和ImageField时,我们有几个步骤:

  • 在settings.py中设置MEDIA_ROOT和MEDIA_URL
    • MEDIA_ROOT:一个绝对路径,Django根据它知道文件要上传到哪里
    • MEDIA_URL:一个公共URL,用来与MEDIA_ROOT对应(不是要相同,而是相关联)
  • 在FileField或ImageField中指定upload_to参数,用来指定文件要被上传到MEDIA_ROOT下的哪个子目录
 
logo = ImageField(upload_to='images/logos')
 
图片就会被上传到MEDIA_ROOT下的images/logos目录下
 
如果要访问图片,还需要设置urls
DIRNAME = os.path.dirname(__file__)
urlpatterns += patterns("",
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': os.path.join(DIRNAME, "media"), 'show_indexes': True }),
)
 
这么设置的前提是要在settings设置MEDIA_URL='/media/'
这样以/media/开头的URL就会被导向django.views.static.serve了,同时从数据库拿出来的url也会自动在前面加上/media/
 
 
 
FileField 和 FieldFile
当在一个model上访问一个FileField(ImageField继承自FileField,所以也适用)时,我们可以得到一个FieldFile实例,作为我们访问底层文件(即真实的那个文件)的代理(proxy)。之所以被称为代理,是因为它具有几个属性和方法,方便我们与具体的文件数据进行交互
  • FieldFile.url:返回一个只读的、用于访问文件的相对路径URL,这是通过访问底层的Storage类的url(name)方法实现的
  • FieldFile.open(mode='rb'):完全类似于python的open(),打开与当前实例相关联的文件,打开模式由mode参数指定
  • FieldFile.close():类似于python的close()方法
  • FieldFile.save(name,content,save=True):手动地将一个文件内容关联到该Field,name是调用后文件的名称,content是要关联的文件的内容,save表示该实例是否在调用完成后就执行保存到数据库。
    • 注:这里的content必须是一个django.core.files.File的实例,而不是python内置的file对象,但是可以通过用python内置的open方法获得file对象后构造一个File实例
  • FieldFile.delete(save=True):删除关联的文件。
    • 注:当model实例被删除的时候,对应的文件不会被自动删除,需要我们手动删除,或执行一条项目管理命令,比如cron
 
File Storage
Django将决定文件存储在哪里的权利委托给一个文件存储系统(file storage system)对象
Django默认的文件存储系统由settings中的DEFUALT_FILE_STORAGE指定,如果我们在编程过程中不显式地指定
我们可以编写定制的文件存储系统,当我们不想使用系统默认的storage时,比如我们想把文件保存在一个远程系统中
在FileField和ImageField中,可以用storage参数指定要使用的storage system

django 用imagefiled访问图片的更多相关文章

  1. Pycharm创建Django项目并访问Django

    Pycharm创建Django项目并访问Django 一.Django插件 如果没有Django插件,需要先安装Django插件. 1,首先点击Default Settings,打开设置页面: 2,打 ...

  2. nginx和tomcat访问图片和静态页面的配置方法

    生产环境下,有时候需要访问图片,正常需要应用ftp.nginx等配套使用,但是有时候为了简化,可以用以下的两种简单的访问,说实话,就是为了偷懒,但是效果是能有的,这就行了,所以今天做这个简化版的方便大 ...

  3. 阿里云部署django实现公网访问

    本博的主要目的是对阿里云部署django实现公网访问进行一次简单的记录,方便日后查询. 内容目录: (1)申请阿里云服务器及安全组配置 (2)实现ssh远程控制 (3)实现ftp文件传输 (4)安装p ...

  4. .net网站上传图片换电脑不显示 当不用网站的IP地址访问图片,只用相对路径访问时,在发布网站的时候,将上传图片的目标文件夹,包含在项目中再发布即可。

    .net网站上传图片换电脑不显示 当不用网站的IP地址访问图片,只用相对路径访问时,在发布网站的时候,将上传图片的目标文件夹,包含在项目中再发布即可.

  5. SpringBoot + Vue前后端分离图片上传到本地并前端访问图片

    同理应该可用于其他文件 图片上传 application.yml 配置相关常量 prop: upload-folder: E:/test/ # 配置SpringMVC文件上传限制,默认1M.注意MB要 ...

  6. django在style的样式image url添加静态图片路径和django如何动态传入图片链接?

    #django在style的样式image url添加静态图片路径 style=" background:url({% static "agribusiness/images/lo ...

  7. Spring Boot解决无法访问图片的问题

    找了很多Spring Boot项目访问图片的解决方式,发现都是配置的,有时配置了也没有用.然后自己研究了一种简单操作的方法. 1,在Spring Boot的static目录下创建一个新目录img(或者 ...

  8. Tomcat访问图片

    Tomcat访问图片 配置server.xml 在 节点中添加 <Context docBase="D:/Tomcat/tomcat-8083/imgs" path=&quo ...

  9. golang对接阿里云私有Bucket上传图片、授权访问图片

    golang对接阿里云私有Bucket上传图片.授权访问图片 1.为什么要设置私有bucket 公共读写:互联网上任何用户都可以对该 Bucket 内的文件进行访问,并且向该 Bucket 写入数据. ...

随机推荐

  1. mssql 用户只能查看授权的数据库

    问题背景:公司的一台数据库服务器上放在多个数据库,每个数据库都使用不同的登录名称,但在将项目文件发布到Ftp时,有些Ftp的信息是在客户那边的 一旦客户那边使用配置文件中的数据库信息连接到数据库他就能 ...

  2. How Tomcat Works(十五)

    本文接下来分析Context容器,Context容器实例表示一个具体的Web应用程序,其中包括一个或多个Wrapper实例:不过Context容器还需要其他的组件支持,典型的如载入器和Session管 ...

  3. [源码分享] HIVE表数据量统计&邮件

    概要: 计算HIVE BI库下每天数据表总大小及增量 输出: 总大小:xxxG 日同比新增数据量:xxxG 周同比新增数据量:xxxG 月同比新增数据量:xxxG 总表数:xxx 日新增表数:xxx ...

  4. java_web用户的自动登录模块的实现

    javaBean的代码 package bean; import java.io.Serializable; public class Admin implements Serializable{ / ...

  5. C#中的Collection 2

    Core Generic interface IEnumerable<T>:you can interate my elemnts, no need to know the count, ...

  6. VC++ 中滑动条(slider控件)使用 [转+补充]

    滑动控件slider是Windows中最常用的控件之一.一般而言它是由一个滑动条,一个滑块和可选的刻度组成,用户可以通过移动滑块在相应的控件中显示对应的值.通常,在滑动控件附近一定有标签控件或编辑框控 ...

  7. 转载:CSS3 圆角(border-radius)

    前缀 例1 例2:无边框 书写顺序 其它 支持性 值:半径的长度 前缀 -moz(例如 -moz-border-radius)用于Firefox -webkit(例如:-webkit-border-r ...

  8. Nutch 教程

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  9. 手机web开发Repeater四层嵌套

    最近有朋友想让我给他做个手机上页面,页面功能是显示省--市--区--门店信息,这种层级关系的数据,首先来看看效果: 我想现在的手机都是智能机了对于普通的asp.net页面开发应该没什么两样,不过最终开 ...

  10. Why we need interfaces in Delphi

    http://sergworks.wordpress.com/2011/12/08/why-we-need-interfaces-in-delphi/ Why we need interfaces i ...