我已遵循此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_folder
,project folder
和manage.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文件在哪里?是否与我的替代设置有关?
答案 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命令触发时都会运行。