Django和处理css,js和图像的奇怪方式

时间:2012-08-28 11:31:28

标签: python django django-staticfiles

我的问题:我可以简单地忽略所有静态,媒体,收集静音和上帝知道什么,并简单地链接我的CSS,img和我的js文件吗?

以管理员文件为例。我将模板复制到我的项目模板文件夹中进行编辑。很简单,但是当我想改变CSS ...哦,男孩。我无法链接任何CSS文件!只有css这个模板愿意找到位于我的django源...改变它到任何东西(如href =“/ assets / css / admin.css”)并且它找不到它。我试着编辑settings.py文件,然后在那里静止任何东西;这显然不起作用。

请帮帮我:我是否需要写入我的settings.py以获得以下结构并能够正常链接我的文件?

项目

----网站

----模板

--------管理员

--------网站

----资产

--------图

--------的CSS

--------的js

提前致谢!

3 个答案:

答案 0 :(得分:1)

摘自Surviving django.contrib.staticfiles (or: how to manage static files with django)

  

如何覆盖静态文件

     

想象一下,您想要覆盖/static_url/admin/css/base.css。   你要做的第一件事就是找到它的位置:

>>> ./manage.py findstatic admin/css/base.css
Found 'admin/css/base.css' here:
  /home/jpic/env/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/base.css
     

然后,将其复制到您拥有的/srv/project/static_dir/   已添加到settings.STATICFILES_DIRS(请参阅上一段)   例如:

mkdir -p /srv/project/static_dir/admin/css/
cp /home/jpic/env/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/base.css /srv/project/static_dir/admin/css
     

您的副本将驻留在   /srv/project/static_dir/admin/css/base.css。对于collectstatic,   /srv/project/static_dir/优先于django/contrib/admin/static   settings.STATICFILES_FINDERS,因为默认顺序   collectstatic

     

所以,/srv/project/static_url/admin/css/base.css会得到   /srv/project/static_dir/admin/css/base.css是您的副本   覆盖django/contrib/admin/static/admin/css/base.css,而不是   原始/static_url/

其中:

  • STATIC_URL/srv/project/static_root/
  • STATIC_ROOT/srv/project/static_dir/
  • STATICFILES_DIRS是{{1}}
  • 中列出的目录

此外,部署时必须运行collectstatic。

是的我写这篇文章是因为我觉得它可以帮助很多人宁愿阅读一篇只涵盖最常见用例而不是完整文档的简短文章 - 即。最后期限。

希望这有帮助。

答案 1 :(得分:0)

在开发环境中,您可以通过Django(django.contrib.staticfiles)提供这些文件。 在生产中,您可以通过像Apache这样的Web服务器提供静态文件(您可以为静态文件目录配置别名)。

答案 2 :(得分:0)

是的,您可以忽略静态,媒体等所有内置Django机制。虽然一旦掌握了它,它确实很方便。

但是,如果您确实要忽略它,并在资产文件夹中提供资产,则需要考虑两个不同的环境:developmentproduction

在开发过程中,您可以让Django runserver为静态资产提供服务,只需告诉它在哪里找到它们即可。请查看文档here,查看使用Django serve()函数执行此操作的示例。

在制作中,您只需将服务器配置为在/assets/路径中以URL开头的任何内容查找该目录。