DJANGO:静态文件未在实时服务器中加载(但在本地加载)?
Posted
技术标签:
【中文标题】DJANGO:静态文件未在实时服务器中加载(但在本地加载)?【英文标题】:DJANGO: Static files not loading in live server (but loads locally)? 【发布时间】:2020-11-29 14:40:00 【问题描述】:Django 网站(django 版本 1.11.29)未从实时服务器上的静态文件夹加载 css 和 js 脚本。但是在本地加载。有什么想法吗?
to css 似乎是正确的,但没有转到 css 样式表本身。
链接到 localhost 主机上的 css:
<link rel="stylesheet" href="/static/website/login/login-style.css">
链接到实时服务器上的 CSS:
<link rel="stylesheet" href="/static/website/login/login-style.css">
settings.py
import os
# other code...
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Static files (CSS, javascript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
#updated
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, STATIC_URL)
登录.html
<link rel="stylesheet" href="% static 'website/login/login-style.css' %">
静态文件夹结构:
blah\project\website\static\website\login
更新:
我意识到我需要通过python manage.py collectstatic
将所有文件复制到根静态文件夹以进行生产。
但是仍然没有加载。我错过了一步吗?更新设置.py
【问题讨论】:
Django 在生产环境中不提供静态文件。预计将由网络服务器完成。 docs.djangoproject.com/en/3.1/howto/static-files/#deployment collectstatic 仅将所有静态文件收集到在“STATIC_ROOT”上声明的目录中。您仍然需要告诉服务器静态文件的 URL。例如,在 pythonanywhere 上,您必须在 Web 应用设置中正确配置 URL 和 PATH。 你在哪里部署? 【参考方案1】:基于 django 文档,你应该使用 nginx 或其他 web 服务器来提供静态文件:
https://docs.djangoproject.com/en/3.0/howto/static-files/#deployment
如果您不想通过网络服务器提供服务,您可以使用 whiteNoise:
http://whitenoise.evans.io/en/stable/django.html
【讨论】:
【参考方案2】:这对我有用:
在 urls.py
上添加这一行到 urlpatterns :static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
所以它看起来像这样:
urlpatterns = [
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
并导入静态:from django.conf.urls.static import static
【讨论】:
【参考方案3】:Django 仅在开发服务器上从“app/static/app/style.css”获取静态文件。当我们在真实服务器上部署时,它会从 assets 文件夹中获取。
【讨论】:
以上是关于DJANGO:静态文件未在实时服务器中加载(但在本地加载)?的主要内容,如果未能解决你的问题,请参考以下文章