显示Django在哪里可以找到我的静态文件,并设置备用设置文件夹

时间:2015-01-08 12:40:36

标签: css django

我已遵循此guide,设置了一个略有不同/更好的django项目。

我也在尝试使用静态文件来加载站点范围的文件(比如每个页面的site.css文件)。为此,我也遵循此guide

我发现它正在寻找http://localhost:8000/static/css/site.css抓住我的css,当css(在磁盘上)是top-level-folder/static/css/site.css时,对于上下文,top-level-folder也在我的位置我的应用和项目文件夹以及manage.py(即app_folderproject foldermanage.py都是top-level-folder的共享父级的兄弟姐妹。

这样的事情:

top-folder
    |-> app-folder (same name as top-folder)
    |-> project-folder (same name as top-folder)
    |-> static

我担心的是找不到这个,因为我没有settings.py文件,而是设置了文件夹,里面有几个文件(基础文件名为{ {1}})按照第一个guide

以下是我的base.py

中的相关摘录
base.py

我默认情况下也有这个,import os BASE_DIR = os.path.dirname(os.path.dirname(__file__)) TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'gantt_charts/templates/gantt_charts')] STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"), ) 但我不知道这是否相关。

那么为什么Django不知道我的.css文件在哪里?是否与我的替代设置有关?

2 个答案:

答案 0 :(得分:1)

最好只更改BASE_DIR以反映您引入的额外级别,而不是更改目录结构:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))

通过这一小改动,您可以将静态文件夹保存在“正确”的位置。

答案 1 :(得分:0)

我已经编辑了我的设置(base.py),并且我移动了我的静态文件夹。

顶级文件夹和应用程序都具有相同的名称,因此我得到了混合使用哪个文件夹。

我现在有:

top-folder
    |-> project-folder (same name as top-folder)
        |-> static
    |-> app-folder

而不是:

top-folder
    |-> app-folder (same name as top-folder)
    |-> project-folder (same name as top-folder)
    |-> static

我的basy.py snippit现在看起来像:

import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates'),
                 os.path.join(BASE_DIR, 'gantt_charts/templates/gantt_charts')]
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),
                    ]

了解我如何在os.path.abspath中居住?这是我认为的另一个重要步骤。

另外值得注意的是,您可以在您的设置中添加调试打印输出(毕竟它是Python代码),这确实有帮助。例如:

print ("Base Dir is at:",BASE_DIR)
print ("Static Dir is at:",STATICFILES_DIRS)

每次runserver命令触发时都会运行。