使用替代设置文件夹设置向 Django 显示在哪里可以找到我的静态文件
Show Django where to find my static files, with an alternative settings folder setup
我已经按照这个guide,建立了一个稍微different/better的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
文件,我有一个设置 文件夹,里面有几个文件(根据第一个 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"),
)
默认情况下我也有这个,STATIC_URL = '/static/'
但我不知道这是否相关。
那么为什么 Django 不知道我的 .css 文件在哪里?与我的替代设置有关吗?
我编辑了我的设置 (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 代码片段现在看起来像:
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 命令触发时都会运行。
与其更改目录结构,不如更改 BASE_DIR 以反映您引入的额外级别:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
通过这个小改动,您可以将静态文件夹保留在 "right" 位置。
我已经按照这个guide,建立了一个稍微different/better的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
文件,我有一个设置 文件夹,里面有几个文件(根据第一个 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"),
)
默认情况下我也有这个,STATIC_URL = '/static/'
但我不知道这是否相关。
那么为什么 Django 不知道我的 .css 文件在哪里?与我的替代设置有关吗?
我编辑了我的设置 (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 代码片段现在看起来像:
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 命令触发时都会运行。
与其更改目录结构,不如更改 BASE_DIR 以反映您引入的额外级别:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
通过这个小改动,您可以将静态文件夹保留在 "right" 位置。