STATIC_ROOT ='/ static /'收集我的工作区目录

时间:2015-12-15 09:55:06

标签: python django static

我在我的settings.py中使用了

STATIC_ROOT = '/static/'

收集静态文件 这是我的static_path设置

STATIC_PATH = os.path.join(BASE_DIR,'static')

当我运行collect静态代码时django在我的工作区文件夹外面创建一个静态文件夹,它不应该收集我已经创建的静态文件夹中的所有静态文件吗?

2 个答案:

答案 0 :(得分:2)

我认为您对STATIC_ROOT以及STATIC_URLSTATICFILES_DIRS设置感到困惑。

告诉Django从example.com/static/提供静态文件,设置

STATIC_URL = '/static/'

您不应该设置STATIC_ROOT = '/static'。这告诉Django收集磁盘上/static/的静态文件, 位于工作区之外。

STATIC_ROOT是收集静态文件的目录。它应该像

STATIC_ROOT = '/var/www/example.com/staticfiles/'

如果您不想对目录进行硬编码,可以执行以下操作:

STATIC_ROOT = 'os.path.join(BASE_DIR, "staticfiles"),'

然后,您可以配置您的网络服务器(例如Nginx或Apache)来提供STATIC_ROOT中的文件。

最后,STATICFILES_DIRS是Django在您运行collectstatic时搜索静态文件的位置列表。这些文件将从该目录复制到STATIC_ROOT。因此,您需要确保STATIC_ROOT中未包含STATICFILES_DIRS

答案 1 :(得分:0)

基本上,您可以为Django项目的不同应用程序创建多个“静态”文件夹,这些文件夹可用于开发。但是每当你去生产服务器并从同一个地方提供所有静态文件时,你就需要这个功能,你可以从不同目录中收集所有静态文件到工作场所之外的一个目录。

project_name
-  project_name
   -   static
       -   static files goes here which are common
   -   __init__.py
   -   settings.py
   -   urls.py
-  application_name
   -   static
       -   static files goes here which are related to application only
   -   __init__.py
   -   settings.py
   -   urls.py
-  static - This is common place where all static files will be placed after collectstatic command for productions only.

根据上述结构,您可以理解您可以使用不同的服务器(如CDN)来服务静态文件。

如果您对答案不满意,请告诉我。感谢。