Обратный поиск для '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 %}

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