如何在 Django 框架中正确显示图像到 html 模板?

How to properly display images to html template in Django framework?

我试了一天试图让保存到媒体文件夹的图像显示在我的模板文件中,但无济于事。图片已上传到 media/images 文件夹,但我不知道如何显示它们。我不知道我做错了什么,因为我看到很多人使用这些方法并得到了结果。我在想也许我的 post 函数没有向模板返回正确的数据? 我是 Django 和 html 的新手,所以请原谅我的错误。

这是我当前的设置:

settings.py

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

models.py

from django.db import models

class Post(models.Model):
    post = models.ImageField(upload_to="images")

forms.py

from django import forms
from imageDetection.models import Post

class HomeForm(forms.ModelForm):
    class Meta: 

        model = Post 
        fields = ('post',)

views.py

class HomeView(TemplateView):
    template_name = 'imageDetection/test.html'

    @staticmethod
    def detect(request):
        return render(request, 'imageDetection/detection.html')

    def get(self, request): 
        form = forms.HomeForm()
        return render(request, self.template_name, {'form': form})

    def post (self, request):
        context = {}
        if request.method == "POST":
            form = forms.HomeForm(request.POST, request.FILES)
            if form.is_valid():
                image_form = models.Post()
                image_form.post = form.cleaned_data['post']
                image_form.save()
                context['form'] = image_form
                return render (request, 'imageDetection/detection.html', context)
            else: 
                form = forms.HomeForm()
                context['form'] = form
        return render(request, self.template_name, context)

urls.py

urlpatterns = [
path('admin/', admin.site.urls),
path('', include('imageDetection.urls')),
]
if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

模板/Detection.html

{% for post in form %}
    {% if post.image %}
        <img src="{{ MEDIA_URL }}{{ post.image.url }}" />
    {% endif %}
{% endfor %}

谢谢,如有任何帮助,我们将不胜感激

在这里我没有看到任何名称为 image 的字段 model.You 已经定义了名称为 post 的图像。

 {% if post.post %}
        <img src="{{ post.post.url }}" />
 {% endif %}

并且在这里最好为您的字段使用 有意义的 变量并且 context.You 可以使用 image 而不是 post 命名您的图像字段和上下文 images 而不是 forms