我注意到当我从模板中引用我的java脚本和静态图像文件时,它们会显示在开发中,而不是来自生产服务器。从开发开始,我就这样访问它们:
<img src="/my_proj/media/css/images/collapsed.png" />
但是从生产开始,我必须删除项目目录:
<img src="/media/css/images/collapsed.png" />
我假设我在提供静态媒体方面做错了。
我遇到了一些在Django中提供静态媒体的看似不同的选项。一方面,建议我使用django-staticfiles来提供媒体服务。另一方面,我在文档中看到STATIC_ROOT and STATIC_URL的引用(关于在生产中使用的警告)。
我有一些“加”和“减”符号的小.png文件,可用于我的一些jQuery脚本。此外,需要引用脚本本身。
1)我是否正确将脚本和网站图像分类为静态媒体? 2)访问此媒体的最佳方法是什么(来自制作)?
答案 0 :(得分:3)
您不应该以这种方式对网址进行硬编码。
如果你正在运行devang版本的Django,你应该check this doc。
如果您不是,为简单起见,您可以使用{{MEDIA_URL}}并在设置中为开发和生产配置该变量。
<img src="{{ MEDIA_URL }}/media/css..." />
请注意,您必须使用RequestContext,see more here on docs here和here。
此外,您应该通过适当的网络服务器直接为所有静态文件提供服务。您可以配置apache或nginx来执行此操作。
答案 1 :(得分:1)
叹息。在生产中只有一种方法可以提供静态媒体,那就是让网络服务器 - 例如Apache - 来做它。 Django-staticfiles仅用于开发,整个文档中都明确说明了这一点。