我如何使用django.core.files.File

时间:2010-04-16 01:41:55

标签: django

docs for django.core.files.File暗示我可以这样做:print File(open(path)).url但是File对象没有属性'url'但是,django.db.models.fields.files.FieldFile扩展了File并确实拥有了所有在文档的文档中描述的属性,但我不能创建一个没有给它一个模型字段 所有我想要的东西,做django.core.files.File文档(上面的链接)说它做的,拿一个python文件,并给它像'url'和'路径'和'名称'的属性,任何人都可以帮助?

干杯,杰克

3 个答案:

答案 0 :(得分:2)

无论Django doc说什么,如果你看一下File类的代码,我都不会在那里看到它。根据Ignacio的建议,您可以从Django File派生并使用MEDIA_ROOT和MEDIA_URL设置来实现您正在寻找的属性......

from django.core.files import File
from django.conf import settings

class UrlFile(File):
    def _get_url(self):
        root_name = self.name.replace(settings.MEDIA_ROOT, '')
        return '%s%s' % (settings.MEDIA_URL, root_name)
    url = property(_get_url)

答案 1 :(得分:0)

如果你派生自file,那么你可以给它任何你喜欢的属性:

class MyFile(file):
  def foobar(self):
    print 'foobar'

f = MyFile('t.txt', 'r')
f.foobar()

答案 2 :(得分:0)

谢谢你们。我通过编写一个自定义类来解决我的问题,它不像Django那样强大,如果我可以使用它,但它适用于我当前的应用程序。我将打开关于文档的门票。