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

2024-05-23 14:23:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题是:我可以简单地忽略静态、媒体、collectstatic和上帝知道什么的胡说八道,只把我的css、img和js文件正常地链接起来吗?在

以管理文件为例。我将模板复制到我的projects template文件夹中进行编辑。很简单,但是当我想改变css时。。。哦,天哪。我不能链接任何css文件!只有css这个模板愿意找到是在我的django源代码。。。将其更改为任何内容(如href=“/assets/css/管理员.css)却找不到。我试着编辑设置.py文件和那个静态的东西在那里;这显然不起作用。在

请帮帮我:请问我需要给我的设置.py为了有以下结构和能够正常链接我的文件?在

项目

----现场

----模板

———管理员

———现场

----资产

———图像

———Css

———Js公司

提前谢谢!在


Tags: 文件py模板编辑img链接管理员js
3条回答

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

但是如果您确实想忽略它,并在assets文件夹中提供资产,那么需要考虑两个不同的环境:development和{}。在

在开发中,您可以让Djangorunserver服务于静态资产,只需告诉它在哪里可以找到它们。看一下文档here,看一个使用Djangoserve()函数执行此操作的示例。在

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

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

How to override a static file

Imagine that you want to override /static_url/admin/css/base.css. The first thing you have to do is find its location:

>>> ./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

Then, copy it to your /srv/project/static_dir/, which you have added to settings.STATICFILES_DIRS (see previous paragraph), for example:

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

Your copy would reside in /srv/project/static_dir/admin/css/base.css. For collectstatic, /srv/project/static_dir/ has priority over django/contrib/admin/static, because of the default order of settings.STATICFILES_FINDERS.

So, collectstatic will get /srv/project/static_url/admin/css/base.css to be a copy of your override /srv/project/static_dir/admin/css/base.css, instead of the original django/contrib/admin/static/admin/css/base.css

其中:

  • /static_url/STATIC_URL
  • /srv/project/static_root/是{}
  • /srv/project/static_dir/STATICFILES_DIRS中列出的dir

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

是的,我写这篇文章是因为我认为它可以帮助很多人,他们宁愿阅读一篇只涉及最常见的用例的短文,而不是完整的文档,例如截止日期。在

希望这有帮助。在

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

相关问题 更多 >