通过使用没有 nginx 的 gunicorn 来自 digitalcloud 教程 我的服务器正在运行并且在控制台上是
not found: /static/style.css
设置.py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
我已经试过了
收集静电
在 urls.py 文件中做
urlpatterns += staticfiles_urlpatterns()
makemigrations + 迁移
也许 django 尝试阅读 'static//static/style.css' 但你需要这个:'style.css' ;) ?
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
urlpatterns = [你的网址] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
您是否尝试更新 Nginx 配置以解决此问题?如果不工作,你为什么不试试 Django 包Whitenoise。如果您按照说明进行操作,它很容易安装和使用。
一些简化的步骤:
收集静态 - 确保静态文件存在
python manage.py collectstatic
安装 Whitenoise - 这一步取决于您如何管理软件包、更新适当的文件(例如 Pipfile 或 requirements.txt)并安装
pip install whitenoise
在 settings.py 中添加以下内容
STATICFILES_STORAGE
- 这将压缩和缓存静态文件(来自 Whitenoise docs)
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
在 settings.py 中将以下内容添加到您的
MIDDLEWARE
- 来自 Whwitenoise 文档,wWhitenoise 包应该在 django.middleware.security.SecurityMiddleware
之后放置中间件
`MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
...
]
现在重新启动或重建应用程序以检查它是否适合您。
如果您在安装 Whitenoise 时遇到问题,请检查 Whitenoise
使用
staticfiles_urlpatterns
的消息:
这仅在DEBUG=True
中的settings.py
时有效,这意味着您不应该将它用于生产环境。请参阅参考资料here
您可以在项目文件夹设置中创建,然后在其中创建设置文件,如名称: 本地.py
from my_project.settings import *
DEBUG = True
ALLOWED_HOSTS = []
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
这在 VM 中运行,如:python manage.py runserver --settings settings.local
记得在网址中添加:
if settings.DEBUG == True:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
web.py
from my_project.settings import *
DEBUG = False
ALLOWED_HOSTS = ["www.side.com", "side.com"]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
然后在gunicorn中只导入web.py文件项目到nginx中读取
这在 VPS 服务器上运行。