代码之家  ›  专栏  ›  技术社区  ›  Jake

如何使用django.core.files.file

  •  2
  • Jake  · 技术社区  · 14 年前

    这个 docs for django.core.files.File 意味着我可以这样做: print File(open(path)).url 但是,文件对象没有属性“url”,django.db.models.fields.files.field file扩展了文件,并且具有文件文档中描述的所有属性,但是如果不给它一个模型字段,就无法创建一个。
    我只希望它能像django.core.files.file的文档(上面的链接)所说的那样,使用一个python文件并赋予它“url”、“path”和“name”等属性,有人能帮我吗?

    干杯,卫国明

    3 回复  |  直到 14 年前
        1
  •  2
  •   T. Stone    14 年前

    不管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)
    
        2
  •  0
  •   Ignacio Vazquez-Abrams    14 年前

    如果你从 file 然后你可以给它任何你喜欢的属性:

    class MyFile(file):
      def foobar(self):
        print 'foobar'
    
    f = MyFile('t.txt', 'r')
    f.foobar()
    
        3
  •  0
  •   Jake    14 年前

    谢谢大家。我已经通过编写一个自定义类来解决了我的问题,如果我可以使用它的话,它并没有Django的强大,但是它适用于我当前的应用程序。我去开一张关于医生的票。