【发布时间】:2019-05-15 03:53:53
【问题描述】:
我完全迷失了这个项目的最后一步。
到目前为止,我已经能够开发出一个 django 应用程序,它可以按照我希望的方式在 localhost 上运行;我已经能够将网站部署到 AWS EC2,但我必须缺少一些关于提供静态文件的基本知识。 (我什至还没有尝试过媒体文件。)我已经阅读了 Django Deployment page 和 How-To manage static files,但我以前从未从头开始部署过网站。我发现的教程似乎相互矛盾(或过时?)。
以下是我想我此时的问题:
- 我是否需要在存储桶中托管静态(和/或媒体)文件,或者这仅仅是一个好主意?
- 当我设置 STATIC_ROOT 和 STATIC_URL 时,我应该设置 STATICFILE_DIRS 吗? (我的意思是,我认为我真的需要一个关于它们如何组合、它们的设置以及“静态”在模板中如何工作的教程。)
- 我试图让白噪声继续运行;我收到一条消息,指出 STATIC_URL 设置不正确;我找不到文档来告诉我它应该是什么。这是一个可行的根吗?
编辑
即使@DirkGroten 给出了非常详细的答案,我仍然不知道如何提供静态文件。我可以运行服务器,然后运行 Web 浏览器来查看没有静态文件的页面。但是,我现在遇到了一个新问题:上面有静态文件的页面会返回 500 27 错误(而它们过去只为文件返回错误)。所以,这是我的文件夹结构,下面是我的设置文件的相关部分(实际上分为 base、dev 和 prod)。
[mainsite]/
|---[mainsite]/
| |---[settings]/
| |---base.py
| |---dev.py
| |---prod.py
|---[app1]/
| |---[migrations]
| |---[static]/
| | |---[app1]/
| | | |---app1_file1.jpg (etc)
| | |---app1_style.css
| |---[templates]/
| | |---[app1]/
| | |---about.html (etc)
|---[app2]/ (etc)
|---[static] (this gets populated after running collectstatic)
开发设置:
Debug = False
ALLOWED_HOSTS = [###.###.###.###]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
... (the rest of the middleware)
]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.abspath(os.path.join(BASE_DIR, 'static'))
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'app1/'),
os.path.join(BASE_DIR, 'app2/'),
os.path.join(BASE_DIR, 'app3/'),
]
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
我已确定我在生产需求文件中导入了 whitnoise。
我错过了什么?
另外,我从未使用过 AWS 支持系统。 (我在免费套餐上。)这是我可以得到他们帮助的事情吗?我要立案吗?
TIA。
【问题讨论】:
标签: django amazon-web-services django-staticfiles static-files