Я использую Django ImageField, но я не могу получить доступ к изображениям на моей странице posts.html

Я использую ImageField в Django, но когда я пытаюсь получить доступ к ним на моих html страницах, это не работает. Я попытался просмотреть ранее заданные вопросы, которые вроде как похожи на мой, но я не смог понять решения.

Вот моя модель:

class Post(models.Model):
    headline = models.CharField(max_length=200)
    sub_headline = models.CharField(max_length=200, null=True, blank=True)
    thumbnail = models.ImageField(null=True, blank=True, upload_to="images", default="placeholder.png")
    body = models.TextField(null=True, blank=True)
    created = models.DateTimeField(auto_now_add=True)
    active = models.BooleanField(default=False)
    featured = models.BooleanField(default=False)
    tags = models.ManyToManyField(Tag, null=True)

Вот как я пытаюсь получить доступ к изображениям в posts.views

 {% for post in posts %}
        <div>
            <div class="post">
                <img class="thumbnail" src="{{post.thumbnail.url}}">
                <div class="post-preview">
                    <h6 class="post-title">{{post.headline}}</h6>
                    <p class="post-intro">{{post.sub_headline}}</p>
                    <a href="{% url 'post' post.id %}">Read More</a>
                    <hr>
                    {% for tag in post.tags.all %}
                        <span class="tag">{{tag}}, </span>
                    {% endfor %}
                </div>
            </div>
        </div>
        {% empty %}
            <h3 align="center">No posts found...</h3>
        {% endfor %}

Для получения дополнительной информации:

views.py

def posts(request):
    posts = Post.objects.filter(active=True)

    context = {'posts': posts}
    return render(request, 'base/posts.html', context)

urls.py

urlpatterns = [
    path('', views.home, name="home"),
    path('posts/', views.posts, name='posts'),
]

posts.html

{% extends 'base/main.html' %}
{% load static %}
{% block content %}

<div class="main-container">
    <h3 align="center">Posts</h3>
    <div class="post-wrapper">
        {% for post in posts %}
        <div>
            <div class="post">
                <img class="thumbnail" src="{{post.thumbnail.url}}">
                <div class="post-preview">
                    <h6 class="post-title">{{post.headline}}</h6>
                    <p class="post-intro">{{post.sub_headline}}</p>
                    <a href="{% url 'post' post.id %}">Read More</a>
                    <hr>
                    {% for tag in post.tags.all %}
                        <span class="tag">{{tag}}, </span>
                    {% endfor %}
                </div>
            </div>
        </div>
        {% empty %}
            <h3 align="center">No posts found...</h3>
        {% endfor %}

    </div>
</div>

{% endblock content %}

Когда я загружаю изображения через страницу администратора, изображения успешно сохраняются в папке images, но я не могу получить доступ к изображениям в моем views.py

from django.conf import settings
img_path = "your_server_address" + settings.MEDIA_URL + unique_img

В случае, если вы используете localhost, вот как вы можете получить доступ к изображению. Здесь unique_path_to_image - это путь, который хранится в базе данных, а media_url_folder_name - это то, что вы указали в файле settings.py.

http://127.0.0.1:8000/media_url_folder_name/unique_path_to_image

Вот как можно показать загруженные пользователем изображения в шаблоне

  1. Установите переменную MEDIA_URL в файле settings.py проекта

    .

    MEDIA_URL = '/media/'

  2. Добавьте эту директиву в файл urls.py проекта

    .

    from django.conf.urls.static import static

    from django.conf import settings

    urlpatterns = [ ... ]

    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Попробуйте и дайте нам знать

Вернуться на верх