Я использую 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
Вот как можно показать загруженные пользователем изображения в шаблоне
Установите переменную MEDIA_URL в файле settings.py проекта
.MEDIA_URL = '/media/'
Добавьте эту директиву в файл 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)
Попробуйте и дайте нам знать