Почему я получаю ошибку, когда использую href=«{{ panel.get_absolute.url }}» в своих шаблонах?

Я написал простую страницу для отображения списка товаров, которая при нажатии на каждый из них перенаправляет вас на целевую страницу, чтобы показать детали товара, но я думаю, что этот метод не работает прямо сейчас или у меня есть ошибка ...

вот моя модель:

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.urls import reverse

class PanelManager(models.Manager):
    def ye(self,year):
        return self.filter(publish__year=year)
    def pu(self,publish):
        return self.filter(status=publish)

class PublishedManager(models.Manager):
    def get_queryset(self):
        return super(PublishedManager,self).get_queryset().filter(status='published')



class Panel(models.Model):
    STATUS_CHOICES = (
        ('draft', 'Draft'),
        ('published', 'Published'),
    )
    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250, unique_for_date='publish')
    body = models.TextField()
    publish = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=10, choices=STATUS_CHOICES, default='draft')
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    objects = PanelManager()
    published = PublishedManager()
    # objects = models.Manager()

    def get_absolute_url(self):
        return reverse('users:details',args=[self.slug, self.id])

    class Meta:
        ordering = ('-publish',)
    def __str__(self):
        return self.title

Мои взгляды:

from django.shortcuts import render,get_object_or_404
from django.http import HttpResponse
from .models import Panel


def test1(request):
    return HttpResponse("Hello this is test1")

def panellist(request):
    panels=Panel.objects.filter(publish__year=2024)
    return render(request, 'users/panel/panel list.html',{'panels':panels})

def p_details(request,panel, pk):
    panel=get_object_or_404(Panel,slug=panel,id=pk)
    return render(request, 'users/panel/details.html', {'panel':panel})

мои урлы:

from django.urls import path
from .import views

urlpatterns = [
    path('panellist/', views.panellist, name='panellist'),
    path('details/<slug:panel>/<int:pk>/', views.p_details, name='details'),

]

мой шаблон


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test 2</title>
</head>
<body>
<h1>second test</h1>
{% for panel in panels %}
    <a href="{{ panel.get_absolute_url }}">
        <h2>{{panel.title}} : {{panel.author}}   -   {{panel.status}}</h2>
    </a>

{% endfor %}
</body>
</html>

Установлено приложение:
введите описание изображения здесь

поля моей панели:
введите описание изображения здесь

Затем я получил эту ошибку :

Ошибка при отрисовке шаблона

В шаблоне D:\Shahram\projects\New folder 4\D_newsite\templates\users\panel\panel list.html, ошибка в строке 10

«users» не является зарегистрированным пространством имен

10 <a href=«{{ panel.get_absolute_url }}»>

Вот в чем проблема:

def get_absolute_url(self):
    return reverse('users:details',args=[self.slug, self.id])

Ошибка говорит о том, что она не знает о префиксе users: в имени этого url.

Ваш файл urls.py содержит url с именем details, но не users:details.

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