Django:静态文件与其他数据文件

时间:2014-03-04 14:57:54

标签: python django

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

2 个答案:

答案 0 :(得分:0)

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

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

使用dev服务器,您可能需要将其添加到您的网址

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

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

答案 1 :(得分:0)

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