Получение изображений из базы данных mysql в django
Я новичок в django и создаю сайт объявлений. Я хочу получить изображение пользователя номер 1 из 2, чтобы отобразить его в виде миниатюр на странице категории. С тех пор я смог получить изображения для страницы пользователя "просмотр объявления", но не для страницы категории.
Я попробовал применить теги url тем же способом, что и для страницы 'view listings', как показано ниже:
<div class="flex-container">
{% if listing.image1 %}
<img src="{{ listing.image1.url }}?" class="small-image" alt="Small image 1">
{% endif %}
{% if listing.image2 %}
<img src="{{ listing.image2.url }}?" class="small-image" alt="Small image 2">
{% endif %}
</div>
Но этот подход не сработал. Поэтому после некоторых исследований я использовал это в "странице категории"
<h1>{{ category.title }}</h1>
<p></p>
<ul>
{% for pedal in pedals %}
<li>
<h3>{{ pedal.pedal_name }}</h3>
<a href="{% url 'pedal_detail' pedal_id=pedal.id %}">
<img src="{% if pedal.images.all|length > 0 %}{{ pedal.images.first.image.url }}{% else %}{% static 'path/to/default/image.jpg' %}{% endif %}" alt="Pedal Thumbnail" class="pedal-thumbnail">
</a>
</li>
<p></p>
{% endfor %}
</ul>
Но опять же, это не сработало. Я не знаю, как лучше поступить. Я включил другой соответствующий код ниже, чтобы помочь советом.
settings.py
STATIC_URL = "/static/"
STATICFILES_STORAGE = "cloudinary_storage.storage.StaticHashedCloudinaryStorage"
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")] # development
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles") # production
CLOUDINARY_URL = os.environ.get("CLOUDINARY_URL")
MEDIA_URL = "/images/"
MEDIA_ROOT = os.path.join(BASE_DIR, '/static/images/')
DEFAULT_FILE_STORAGE = "cloudinary_storage.storage.MediaCloudinaryStorage"
# Cloudinary Storage Configuration
CLOUDINARY_STORAGE = {
'CLOUD_NAME': os.environ.get('CLOUD_NAME'),
'API_KEY': os.environ.get('API_KEY'),
'API_SECRET': os.environ.get('API_SECRET'),
}
views.py
def category_page(request, category_id):
# Retrieve the category based on ID
category = get_object_or_404(Category, id=category_id)
# Retrieve all pedals belonging to selected category
pedals = Pedal.objects.filter(category_name=category)
return render(request, 'category_page.html', {'category': category, 'pedals': pedals})
def pedal_detail(request, pedal_id):
pedal = get_object_or_404(Pedal, id=pedal_id)
return render(request, 'pedal_detail.html', {'pedal': pedal})
urls.py
urlpatterns = [
path('my_listings/', views.my_listings, name='my_listings'),
path('create/', views.create_listing, name='create_listing'),
path('listings/<int:pk>/', views.listing_detail, name='listing_detail'),
path('listings/<int:pk>/update/', views.update_listing, name='update_listing'),
path('listings/<int:pk>/delete/', views.delete_listing, name='delete_listing'),
path('listings/category/<int:category_id>/', views.category_page, name='category_page'),
path('listings/pedal/<int:pedal_id>/', views.pedal_detail, name='pedal_detail'),
]
Любая помощь будет оценена по достоинству - спасибо!
Возможно, я не понимаю всей проблемы, но я не вижу никакого статического обработчика url.
У вас есть в urls.py static
обработчик файлов? Если нет, попробуйте добавить обработчик folloving:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Добавили ли вы статический файл, обрабатываемый в вашем urls.py
коде
from django.conf import settings
from django.conf.urls.static import static
urlpatters = [
#url
] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)