Обратный поиск для 'listing_detail' с ключевыми аргументами '{'pk': ''}' не найден. Проверен 1 шаблон(ы): ['листинги/листинги/(?P<pk>[0-9]+)/\\\Z'] [дубликат]
Я новичок в django и создаю сайт объявлений, похожий на Gumtree. Когда я пытаюсь получить объявления зарегистрированного пользователя из базы данных и отобразить на его странице MyListings, я получаю описанную выше ошибку. Мой код приведен ниже. Буду признателен за любую помощь!
Кроме того, я проверил, у каждого листинга есть значение pk.
urls.py
from django.urls import path
from listings import views
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'),
]
views.py
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
from .models import Listing
from users.models import Profile
from .forms import ListingForm
from django.contrib import messages
from django.contrib.auth import get_user_model
from django.db import IntegrityError
from django.core.exceptions import ObjectDoesNotExist
User = get_user_model()
@login_required
def my_listings(request):
print("my_listings view called")
context = {} #initialise the context dictionary
if request.user.is_authenticated:
try:
# Get logged-in user
logged_in_user=request.user
# Get user profile
profile=get_object_or_404(Profile, email=logged_in_user.email)
print(f"Profile for user {request.user}: {profile}")
listings = Listing.objects.filter(profile=profile)
print(f"Listings for profile {profile}: {listings}")
for listing in listings:
print(f"Listing PK: {listing.pk}")
except ObjectDoesNotExist:
print(f"Profile does not exist for user {request.user}")
# If the profile doesn't exist, handle the error
profile = None
listings = Listing.objects.none()
context['listings'] = listings
print("Context listings:", listings)
return render(request, "my_listings.html", context)
else:
# If user not logged-in, redirect to login page
return redirect('login')
my_listings.html
{% extends 'base.html' %}
{% url 'create_listing' as create_listing_url %}
{% url 'listing_detail' as listing_detail_url %}
{% url 'update_listing' as update_listing_url %}
{% url 'delete_listing' as delete_listing_url %}
{% load static %}
{% block content %}
<div class="dj-page">
<div class="container">
<div class="row">
<div class="col-md-8 mt-3 offset-md-2">
<h1>MyListings</h1>
{% if listings %}
<ul>
{% for listing in listings %}
<div class="listing">
<li>{{ listing.title }}</li>
<p>PK: {{ listing.pk }}</p>
<!-- Debug print statement to check listing PK -->
{% if listing.pk %}
<p>Listing PK: {{ listing.pk }}</p>
{% else %}
<p>Listing PK is empty or None</p>
{% endif %}
</div>
{% endfor %}
</ul>
<p>
<a href="{% url 'listing_detail' pk=listing.pk %}">View Details</a>
<a href="{% url 'update_listing' pk=listing.pk %}">Update Listing</a>
<a href="{% url 'delete_listing' pk=listing.pk %}">Delete Listing</a>
</p>
{% else %}
<p>No listings yet - <a href="{% url 'create_listing' %}">create your first listing here</a>!</p>
{% endif %}
{% if listings %}
<p><a href="{% url 'create_listing' %}">Create Listing</a></p>
{% endif %}
</div>
</div>
</div>
</div>
{% endblock %}