提问人:MEZIANE Yacine 提问时间:9/27/2023 更新时间:9/27/2023 访问量:27
无法为 Django 应用程序提供静态文件 (Apache - WSGI )
couldn't serve static file for a django app (apache - wsgi )
问:
我有一个名为 Portfolio 的投影,这是我的主页。 我在这个项目上创建了一个名为 experiences 的应用程序。
在开发服务器上,我能够为两者提供静态文件。但是在生产中,我只能为主页(项目)提供服务,而不能为应用程序提供服务。我有 404 Not Found 错误。
我让 collecstatic 变得欣喜若狂。
我在每个应用程序(和项目)上都有一个静态目录。
我正在使用带有 wsgi 模块的 apache。
我有这个关于设置文件的会议:
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "Portfolio/static")
]
拱门下方:
src/
|-- Experiences
| |-- __pycache__
| |-- migrations
| | `-- __pycache__
| |-- static
| | `-- Experiences
| | |-- assets
| | | |-- fonts
| | | `-- img
| | `-- css
| `-- templates
| `-- Experiences
|-- Portfolio
| |-- __pycache__
| |-- static
| | `-- Portfolio
| | |-- assets
| | | |-- fonts
| | | `-- img
| | `-- css
| `-- templates
| `-- Portfolio
`-- staticfiles
|-- Experiences
| |-- assets
| | |-- fonts
| | `-- img
| `-- css
|-- Portfolio
| |-- assets
| | |-- fonts
| | `-- img
| `-- css
`-- admin
答:
1赞
Mounir
9/27/2023
#1
这是意料之中的,在开发中,Django 提供静态文件,但在生产中(当 debug 为 false 时)则不然,因为这会导致性能问题。
你可以查看官方文档,了解如何在 Django Docs 中配置静态文件
如果你想要一个更简单的解决方案,你可以尝试白噪声
0赞
MEZIANE Yacine
9/27/2023
#2
我更改了应用程序静态文件的位置。 我已将所有静态文件放在同一个目录上。
yacine@debian:/var/www/Portfolio/src/Portfolio$ tree static/ -d
static/
|-- Experiences
| |-- assets
| | |-- fonts
| | `-- img
| `-- css
`-- Portfolio
|-- assets
| |-- fonts
| `-- img
`-- css
我不确定这是最好的方法,但它目前有效。
评论
0赞
Mounir
9/28/2023
为此,您可以使用 Django 文档中提到的专用命令,该命令会将所有 Django 应用程序中的所有静态文件收集到您在设置中定义的 STATIC_ROOT 文件夹中。因此,在每次部署之前,您必须确保运行它,与数据库迁移的 migrate 命令相同./manage.py collectstatic
评论