【问题标题】:How does collect static work?收集静电如何工作?
【发布时间】:2013-08-02 15:56:22
【问题描述】:

我根本不了解 manage.py collectstatic 是如何工作的。我的想法是你有路

project/app/static/app/base.css 

并运行 collectstatic 并将它们复制到 /staticfiles/ 文件夹,然后 {{STATIC_URL}} 可以访问该文件夹。我已经尝试过了,它似乎没有找到 base.css。

这是我的变量供参考:

basepath = os.path.split(os.path.abspath(__file__))[0]    
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(basepath, 'staticfiles')
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}base.css" />

在尝试获取样式表时会导致 404 错误:

"GET /base.css HTTP/1.1" 404 2255

【问题讨论】:

  • 样式表在/static/base.css 可用吗?
  • 好像是。当我收集静态时,它告诉我一个文件被复制,但复制到哪里?这是我的目录的外观:i.imgur.com/6HmlQZO.png

标签: django


【解决方案1】:

看来 collectstatic 可以很好地复制它。

我认为您只需要使用{% static "base.css" %} 模板标签,而不是尝试访问STATIC_URL 变量

我认为STATIC_URL 在模板范围内不可用。

你可以通过类似的方式访问它

from django.conf import settings

settings.STATIC_URL

{% static %} 标签会为您执行此操作。似乎 django 的版本很重要 1.5 looks like 它使用了{% static %} 标签,但是当你注册了RequestContext 时,早期版本看起来支持STATIC_URL

【讨论】:

  • 辛苦了。我想我在某处读到这对于部署到生产来说效率非常低?还是我在想别的?
  • @Nanor,你的网络服务器,即。 apache、nginx 等应该为您提供静态内容,而不是 django,如果使用 apache,您可以使用 Alias 来执行此操作
  • 如果它从 Amazon S3 获取文件是不是类似于让一个 Web 服务器来做呢?我就是这样设置的。
  • @Nanor,是的,也许更好
猜你喜欢
  • 1970-01-01
  • 2012-09-27
  • 2011-09-30
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多