settings.py中的Static_Root重定向到应用程序中的我的静态文件夹,而不是基本根

时间:2018-06-29 16:20:08

标签: python django heroku

我很难将项目部署到heroku,因为它说找不到静态文件。我的静态文件位于一个名为“ static”的文件夹中的名为“ social”的应用程序中,而不位于manage.py所在的基本目录中。
--p_12(文件夹)-settings.py
--social(文件夹)-static(文件夹)-CSS,图像,JavaScript
--manage.py

heroku文档说要将其放入您的settings.py:

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')   
STATIC_URL = '/static/'     
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

所以我的问题是,如何使它指向我的社交应用程序中的静态文件夹。老实说,我已经尝试了一个小时。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

好吧,这是您不想将静态根源指向社交对象的事情。这就是django最佳实践所说的。

根据您当前的设置(假设您尚未更改BASE_DIR)。您告诉django在根目录下的名为 staticfiles 的文件夹中查找静态文件。

project_root
|__manage.py
|__staticfiles
|__app_name
|__requirements.txt

运行时

python manage.py collectstatic

django查找所有名为static的文件夹,并复制其内容并将其放置在static_root中。

在您的情况下,内容被转储到静态文件中。

理想情况下,在运行collectstaic命令之后,这就是您想要的staticfiles文件夹中的内容。

staticfiles
|___app_1
|    |___css
     |___js
     |___images  
|
|___app_2
     |___css
     |___js
     |___images

一旦安装好,django应该能够在生产环境中找到静态文件。

但是要做到这一点。确保在您的应用中像这样存储静态文件。

app_name
|____static
        |___app_name
        |        |____css
                 |____js
                 |____images

以这种格式排列文件并运行collectstaic。确保staticfiles具有上述内容。你应该很好。

相关问题