首页 > 解决方案 > 图片未显示在帖子中。在 Django 中,post.image 没有在 blogHome.html 和 blogPost.html 页面中显示图像

问题描述

我的 django 项目主页和博客中有两个应用程序。所有与帖子相关的编码都在博客应用程序中。我正在从 Post 模型中获取数据。这是 blogHome.html 模板的编码

{% extends base.html %}
    <h1>Posts Results By Ayyal Ayuro Care</h1>
        <div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 g-3 my-4">
            {% for post in allPosts %}
            <div class="col">
                <div class="card shadow-sm">
                    <img src="{{post.image}}" class="d-block w-100" alt="...">
    
                    <div class="card-body">
                        <h3>Post by {{post.author}}</h3>
                        <h4>{{post.title}}</h4>
                        <p class="card-text">
                        <div class="preview">{{post.content|safe| truncatechars:150 }}</div>
                        </p>
                        <div class="d-flex justify-content-between align-items-center">
                            <div class="btn-group">
                                <a href="{{post.slug}}" role="button" class="btn btn-primary">View More</a>
                            </div>
                            <small class="text-muted">{{post.timestamp}}</small>
                        </div>
                    </div>
                </div>
            </div>
            {% endfor %}
    
        </div>

这是 blogPost.html 的编码。当有人单击 blogHome.html 页面中的查看更多按钮时,它会显示 blogPost.html 页面。但是图像也没有显示在此页面中。

{% extends base.html %}    
<div class="container my-4">
      <img src="{{post.image}}" class="d-block w-100" alt="...">
      <h2 class="blog-post-title">{{post.title}}</h2>
      <p class="blog-post-meta">{{post.timestamp}} by <a href="#">{{post.author}}</a></p>
      <p>{{post.content|safe}}</p>
      <hr>
    </div>

这是我的博客应用程序的views.py文件

from django.contrib.auth import models
from django.http import response
from django.shortcuts import redirect, render, HttpResponse
from datetime import datetime
from home.models import Comment
from blog.models import Post
from django.contrib import messages
from django.contrib.auth.models import User


# Create your views here.
def blogHome(request): 
    allPosts = Post.objects.all()
    context = {'allPosts': allPosts}
    return render(request, 'blog/blogHome.html', context)
    # return HttpResponse("This is Herbal Drugs Page")
    #return HttpResponse('This is  blog home. We will keep all blog posts here')

def blogPost(request, slug): 
    post = Post.objects.filter(slug=slug).first()
    comment = Comment.objects.filter(post=post, parent=None)
    replies = Comment.objects.filter(post=post).exclude(parent=None)
    replyDict = {}
    for reply in replies:
        if reply.parent.sno not in replyDict.keys():
            replyDict[reply.parent.sno] = [reply]
        else:
            replyDict[reply.parent.sno].append(reply)
    context = {'post': post, 'comments': comment, 'user': request.user, 'replyDict': replyDict}
    return render(request, 'blog/blogPost.html', context)
    #return HttpResponse(f'This is blogPost : {slug}')

这是博客应用程序的 urls.py 文件

from django.contrib import admin
from django.urls import path, include
from blog import views

urlpatterns = [
    path('', views.blogHome, name="bloghome"),
    path('<str:slug>', views.blogPost, name="blogPost"),
]

图像在静态下的图像中。除了 post.image 之外,帖子中的每个字段都在工作。当我添加新帖子时,它会显示所有内容,但不显示图像。这是帖子在网页中的显示方式

标签: htmldjango

解决方案


代替

<img src="{{post.image}}" class="d-block w-100" alt="...">

利用

<img src="{{post.image.url}}" class="d-block w-100" alt="...">

推荐阅读