django - 静态图像未显示在模板中
django - static image not showing up in template
我只是想显示存储在静态文件夹中的基本图像,但没有显示任何内容。我有 运行 collectstatic
但什么都没有。
路径:
/static/logos/IMG_1793.jpg
(打印时显示的内容tenant.image.url
)
Settings.html:
<img src="{{ imagePath }}" alt="{{ tenant.name }}">
我也试过:src="{% static imagePath %}"
Views.py
def settingsPage(request):
tenant = get_tenant(request)
imagePath = tenant.image.url
context = {'tenant': tenant, 'imagePath': imagePath}
return render(request, 'setting/settings.html', context)
Models.py
class Tenant(models.Model):
name = models.CharField(max_length=255)
subdomain = models.CharField(max_length=255)
image = models.ImageField(upload_to='static/logos/', blank=True)
class TenantAwareModel(models.Model):
tenant = models.ForeignKey(Tenant, on_delete=models.CASCADE)
在 img
标签 src
属性中,您通常放置图像的 URL。所以如果你知道 URL 就把它放在那里而不是放图像名称。
<img src="{{ tenant.image.url }}" alt="{{ tenant.name }}">
如果您处于开发者模式
在settings.py
确保调试为假 (DEBUG = False
)
并且您指定了 STATIC_ROOT = 'static/'
解决您的挑战非常直接,首先在您的 setting.py 文件中设置媒体 url 和静态路径相对重要:
# Goes in the setting.py
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/media')
然后你 link 你的媒体和静态路径在你的主要 urls.py 加载静态文件,有时将你的文件保存在静态和媒体目录中。
#Your main urls.py
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
然后我们专注于我们的 view.py 前端渲染数据的所有操作发生的地方。你所做的基本上是好的,所以我会坚持你的约定!但是您错过了从后端获取数据的过程,其中
可能无法为您渲染图像,我想这就是我们的挑战所在。
# our view.py
# first make sure to import the tenant models
from .models import Tenant
def settingsPage(request):
# Here we are getting all tenant objects from our backend database
# to render in the frontend template
tenants = Tenant.objects.all()
context = {'tenants': tenants}
return render(request, 'setting/settings.html', context)
查看数据后,我们专注于在前端模板中呈现数据。这是我们要显示图像的地方。由于我们的视图不是详细视图,因此我们需要循环遍历模板中视图中的数据以渲染图像。
# our template where the image will be shown.
# here we are looping to get all the objects in tenant
{% for tenant in tenants %}
<div>
<img src="{{ tenant.image.url }}" alt="">
{{ tenant.name }}
{{ tenant.subdomain}}
</div>
{% endfor %}
我只是想显示存储在静态文件夹中的基本图像,但没有显示任何内容。我有 运行 collectstatic
但什么都没有。
路径: /static/logos/IMG_1793.jpg
(打印时显示的内容tenant.image.url
)
Settings.html:
<img src="{{ imagePath }}" alt="{{ tenant.name }}">
我也试过:src="{% static imagePath %}"
Views.py
def settingsPage(request):
tenant = get_tenant(request)
imagePath = tenant.image.url
context = {'tenant': tenant, 'imagePath': imagePath}
return render(request, 'setting/settings.html', context)
Models.py
class Tenant(models.Model):
name = models.CharField(max_length=255)
subdomain = models.CharField(max_length=255)
image = models.ImageField(upload_to='static/logos/', blank=True)
class TenantAwareModel(models.Model):
tenant = models.ForeignKey(Tenant, on_delete=models.CASCADE)
在 img
标签 src
属性中,您通常放置图像的 URL。所以如果你知道 URL 就把它放在那里而不是放图像名称。
<img src="{{ tenant.image.url }}" alt="{{ tenant.name }}">
如果您处于开发者模式
在settings.py
确保调试为假 (DEBUG = False
)
并且您指定了 STATIC_ROOT = 'static/'
解决您的挑战非常直接,首先在您的 setting.py 文件中设置媒体 url 和静态路径相对重要:
# Goes in the setting.py
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/media')
然后你 link 你的媒体和静态路径在你的主要 urls.py 加载静态文件,有时将你的文件保存在静态和媒体目录中。
#Your main urls.py
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
然后我们专注于我们的 view.py 前端渲染数据的所有操作发生的地方。你所做的基本上是好的,所以我会坚持你的约定!但是您错过了从后端获取数据的过程,其中 可能无法为您渲染图像,我想这就是我们的挑战所在。
# our view.py
# first make sure to import the tenant models
from .models import Tenant
def settingsPage(request):
# Here we are getting all tenant objects from our backend database
# to render in the frontend template
tenants = Tenant.objects.all()
context = {'tenants': tenants}
return render(request, 'setting/settings.html', context)
查看数据后,我们专注于在前端模板中呈现数据。这是我们要显示图像的地方。由于我们的视图不是详细视图,因此我们需要循环遍历模板中视图中的数据以渲染图像。
# our template where the image will be shown.
# here we are looping to get all the objects in tenant
{% for tenant in tenants %}
<div>
<img src="{{ tenant.image.url }}" alt="">
{{ tenant.name }}
{{ tenant.subdomain}}
</div>
{% endfor %}