Я целый день пытался получить изображения, сохраненные в папке мультимедиа, для отображения в моем файле шаблона, но безрезультатно. Изображения загружаются в папку media / images, но я не могу понять, как их отображать. Я не могу понять, что я делаю неправильно, потому что я вижу, что многие люди используют эти методы и получают результат. Я думаю, может быть, моя функция публикации не возвращает правильные данные в шаблон? Я очень новичок в 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)

template / Detection.html

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

Спасибо, любая помощь будет оценена

0
Vishnu 20 Дек 2019 в 19:37
59428629