使用 django 3.0.5,但我想这也与 < django 2.0 有关。
我在我的提供商空间上传了我的第一个 django 应用程序,到目前为止一切正常。这是我的提供者的服务器架构...
_
(` ).
( ). .-------. .-------.
_( '`. ----------> | nginx | -----> | httpd |
.=(`( Internet ) '-------' '-------'
(( (..__.:'-' | => php via php-fpm
`( ) ) | => static files
` __.:' ) | => htaccess
--' |
| .--------------.
'----------> | Web Backends |
'--------------'
=> per-user nginx
=> nodejs, python, ruby, ...
=> gogs, mattermost, matrix, ...
但是我仍然不明白一些 Django 静态逻辑。我的静态文件通过单独的 Apache 服务提供。我的应用程序调用blackbird
下面就像一个 web 后端打印
blackbird.abc/blackbird_assets apache
blackbird.abc http:8080 Ok, listening : PID 10104, vassalsuWSGI worker 2
这就像我的服务器帐户目录看起来像
User
|
'-blackbird_app
| '- manage.py
'-hmtl <symbolic link to my documentroot>
'- blackbird_assets
'- static_storage
'-production_static
'-css
'-img
如果我想将production_static
我的 apache 站点上的文件夹重命名为hello_static
并重新启动我的应用程序,django 没有找到静态文件。好吧,我猜,但另一方面,django 怎么能找到production_static
,因为这是我目前的settings.py
settings.py
生产
DEBUG=false
INSTALLED_APPS = [
<...>
'django.contrib.staticfiles',
]
STATIC_URL = '/static/'
# STATIC_ROOT = ''
# STATICFILES_DIRS = ''
我也尝试过掀起整体django.contrib.staticfiles
,没有它django还是能找到production_static
,但是不行hello_static
我唯一一次提到显式静态文件夹是在开发中。在我收集静态并将其上传到我的 apache 文件夹并通过 Git 我的应用程序之前。旁注:我的 blackbird 生产应用程序文件夹中没有静态文件夹。
settings.py
发展
STATIC_URL = '/static/'
STATIC_ROOT = '/static_storage/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, env('STATICFILES_DIRS'))]
# env('STATICFILES_DIRS') = static_storage/development_static
问题
Django Doc 说STATIC_ROOT
仅适用于 collectstatic。所以我将它用作开发中的导出文件夹。但似乎内部发生了更多事情?否则 Django 不会在我的生产应用程序中查看他的项目文件夹之外,static_storage/development_static
但是当我将我的文件夹设置为static_storage/hello_static
它时错过了它。
STATICFILES_DIRS
- (附加文件夹)作为一个选项 - 仅与 collectstatic 相关,或者错过我的东西?
django 是否collectstatic
在项目内部保存了静态文件夹路径?
有没有办法在生产中为 Django 设置一个新的显式静态路径,或者我是否通过 apache 将别名设置为一个新的静态文件夹?我读过它,但首先我必须了解 django 的逻辑。