我对这个项目的最后一步完全迷失了。
到目前为止,我已经能够开发一个 Django 应用程序,它可以在本地主机上按照我想要的方式工作;我已经能够将网站部署到 AWS EC2,但我一定错过了有关提供静态文件的一些基本知识。 (我什至还没有尝试过媒体文件。)我已经阅读了 Django部署页面 https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/以及如何管理静态文件 https://docs.djangoproject.com/en/2.1/howto/static-files/,但我以前从未从头开始部署过网站。我发现的教程似乎是矛盾的(或过时的?)。
以下是我想我现在有的问题:
- Do I need在存储桶中托管静态(和/或媒体)文件,或者这仅仅是一个好主意?
- 当我设置 STATIC_ROOT 和 STATIC_URL 时,是否应该设置 STATICFILE_DIRS? (我的意思是,我认为我真的需要一个关于它们如何组合在一起、它们的设置以及“静态”在模板中如何工作的教程。)
- 我尝试过让白噪音运转起来;我收到一条消息,指出 STATIC_URL 设置不正确;我找不到文档来告诉我它应该是什么。这是一个可行的根吗?
EDIT
即使@DirkGroten 的答案非常详细,我仍然不知道如何提供静态文件。我可以运行服务器,然后通过网络浏览器查看没有静态文件的页面。但是,我现在遇到了一个新问题:包含静态文件的页面返回 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'
我已确保在生产需求文件中导入白噪声。
我缺少什么?
另外,我从未使用过AWS支持系统。 (我属于免费套餐。)这是我可以得到他们帮助的事情吗?我要立案吗?
TIA.