-1

我的问题:我可以简单地忽略所有那些无意义的静态、媒体、collectstatic 和上帝知道什么,并且简单地正常链接我的 css、img 和我的 js 文件吗?

以管理文件为例。我将模板复制到我的项目模板文件夹中以进行编辑。很简单,但是当我想改变css时......哦,男孩。我无法链接任何css文件!只有这个模板愿意找到的 css 位于我的 django 源中......将其更改为任何内容(如 href="/assets/css/admin.css"),但找不到它。我试图编辑 settings.py 文件和那里的静态文件;这显然没有用。

请帮助我:我究竟需要写什么到我的 settings.py 才能具有以下结构并能够正常链接我的文件?

项目

- - 地点

----模板

- - - - 行政

- - - - 地点

- - 资产

--------图片

--------CSS

--------Js

提前致谢!

4

3 回答 3

1

从 Surviving django.contrib.staticfiles 中提取(或:如何使用 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成为您的 override 的副本/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

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

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

希望这可以帮助。

于 2012-08-28T12:27:46.347 回答
0

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

于 2012-08-28T11:44:44.170 回答
0

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

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

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

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

于 2012-08-28T11:45:47.430 回答