【发布时间】:2019-07-07 13:47:40
【问题描述】:
我正在尝试在导航栏上显示图像(徽标)。
我的项目名为“mysite-project”(其中manage-py是),它包含应用程序“mysite”。
为了上传我的静态文件,我做了以下操作:
1) mysite-project/mysite/settings.py
我补充说:
STATIC_ROOT = os.path.join(BASE_DIR,"static")
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, '/static/')
]
2) 创建文件夹 static 并将我的 logo.png 添加到:
mysite-project/static/mysite-project/logo.png
3) mysite-project/templates/base.html
{% load staticfiles %}
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="{% url 'home' %}">
<img src="{% static 'mysite/logo.png' %}" height=30 width=30 class="d-inline-block alighn-top" />
Code of Conduct
</a>
</nav>
4) 在 mysite-project/mysite/urls.py
from django.contrib import admin
from django.urls import path, include
from django.views.generic.base import TemplateView
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('', TemplateView.as_view(template_name='home.html'), name='home'),
path('admin/', admin.site.urls),
path('users/', include('users.urls')),
path('users/', include('django.contrib.auth.urls')),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
但是图片不显示。我认为我在文件夹的 settings.py 中有一些问题,但我找不到位置
【问题讨论】:
-
您是否在网络服务器后面运行应用程序? You can configure the dev server to serve static files 但您应该考虑在部署时在网络服务器后面运行您的应用程序,该服务器将直接从磁盘为您的静态文件提供服务(我建议使用 nginx)
-
我不确定你的意思,但我在我的
mysite-project/mysite/urls.py中添加了+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) -
你说你添加了静态文件到“mysite-project/static/mysite-project/logo.png” 这与img src中引用的静态文件不匹配“{% static 'mysite /logo.png' %}"
mysite与mysite-project不匹配。您没有看到来自开发服务器日志的 404 吗? -
导航栏加载,但不是徽标,而是未呈现的图像。即使我这样做,问题仍然存在:
<img src="{% static 'mysite-project/static/mysite-project/logo.png' %}" height=30 width=30 class="d-inline-block alighn-top" /> -
如果我运行
python manage.py collectstatic我得到错误:FileNotFoundError: [Errno 2] No such file or directory: '/static'
标签: django