【问题标题】:Django: static files vs. other data filesDjango:静态文件与其他数据文件
【发布时间】:2014-03-04 14:57:53
【问题描述】:

如果我想在模板中显示图像,我指定的路径是相对于我的应用程序目录中的静态文件夹的。但是如果我想从视图函数加载文件,那么我指定的路径似乎是相对于项目目录的。这些文件应该都在同一个目录中吗?或者以这种方式将它们分开是典型的吗?视图函数加载的文件(例如包含人类可读设置的文本文件)是否被视为“静态”,与用于呈现我的模板的图像、css 和 js 文件具有相同的意义?

【问题讨论】:

    标签: python django


    【解决方案1】:

    Django 支持两种不同的东西:静态文件和媒体文件。静态文件(CSS、JavaScript、图像)是您网站的一部分。用户上传的图片或视频等内容会上传到MEDIA_ROOT。您可以使用这两个设置来控制它:

    MEDIA_ROOT = '/absolute/path/to/media'
    MEDIA_URL = '/media/'
    

    使用开发服务器,您可能需要将其添加到您的 URL,

    urlpatterns = patterns('',
        # ... the rest of your URLconf goes here ...
    ) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    

    使用文件上传字段(FileFieldImageField),您可以使用包含定义的MEDIA_URL 的 url 属性获取文件 url。

    【讨论】:

      【解决方案2】:

      不,您不应该将真正的静态内容与包数据文件混为一谈。除此之外,您通常不希望用户能够直接读取这些数据文件。相反,将文件放在包目录中的其他位置,然后使用 pkgutil.get_data 读取它们。

      【讨论】:

        猜你喜欢
        • 2015-08-17
        • 1970-01-01
        • 2011-01-12
        • 2014-02-26
        • 2021-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多