Я не могу передать объект на страницу display_item.html со страницы index в Djanog
Я очень долго пытался передать элемент, который получается через цикл for в языке шаблонов Django. Элемент - это объект. Я перепробовал множество различных вариантов, но пока ничего не получается.
Это индексный файл.
{% extends "auctions/layout.html" %}
{% block body %}
<h2>Active Listings</h2>
{% for item in listings %}
<a href="{% url 'display_item' entry=item %}">
<img src="/media/{{ item.image_url }}" width="300" height="400" alt="Picture of the item.">
<h3>{{ item.title }}</h3>
</a>
<p>{{ item.description }}</p>
<h5>Starting bid: {{ item.starting_bid }}</h5>
{% empty %}
<h4>No listings to display!</h4>
{% endfor %}
{% endblock %}
Это файл, который должен отображать объект.
{% extends 'auctions/layout.html' %}
{% block body %}
<img src="/media/{{ item.image_url }}" width="400" alt="Picture of item here.">
<p>{{ item.category }}</p>
<h3>{{ item.title }}</h3>
<p>{{ item.description }}</p>
<br>
<br>
<h5>Created by {{ item.created_by }}</h5>
<p>{{ item.created_at }}</p>
{% endblock %}
Это файл URLS.py.
from django.conf import settings
from django.conf.urls.static import static
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="index"),
path("login", views.login_view, name="login"),
path("logout", views.logout_view, name="logout"),
path("register", views.register, name="register"),
path("new_listing", views.new_listing, name="new_listing"),
path("display_item/<str:entry>/", views.display_item , name="display_item")
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
И, наконец, это мой файл views.py.
Я пробовал chatGPT, я пытался проверить его datatype и отрисовать его, но он не виден. Проверяю свой код кучу раз.
Я ожидал, что это сработает.
Итак, в Django мы не можем напрямую передавать объекты через URL. Что мы должны сделать, так это передать через URL некоторый способ (обычно ID) функции, которая будет рендерить последующую страницу, а затем вызвать этот объект в этой функции представления напрямую.