2014-03-04 61 views
1

如果我想在模板中显示图像,我指定的路径是相对于我的app目录中的静态文件夹。但是,如果我想从视图函数加载文件,那么我指定的路径似乎是相对于项目目录。这些文件是否应该放在同一个目录下?还是通常以这种方式将它们分开?是否将视图函数(例如包含人类可读设置的文本文件)加载的文件视为“静态”,与用于呈现模板的图像,CSS和js文件相同?Django:静态文件与其他数据文件

回答

0

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

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

使用开发服务器,你可能需要添加到您的网址,

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

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

0

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