zoukankan      html  css  js  c++  java
  • django 用imagefiled访问图片

    使用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
  • 相关阅读:
    akka并发编程练习
    使用selenium和chromedriver组合爬虫时,如果爬取的页面数量巨多,会出现占用内存逐渐增大知道程序崩溃的情况
    网易2017秋招编程题集合_以下代码全部来自牛客网
    牛客网_运行问题
    json和xml之间转换的好文
    Eclipse 启动时闪退问题解决方案
    关于opencv的文件配置详细内容
    第一个opencv声称图片_以及遇到的问题集锦
    好文收藏_关于find_first_not_of函数
    好文收藏readtxt_cpp
  • 原文地址:https://www.cnblogs.com/amghost/p/3572144.html
Copyright © 2011-2022 走看看