ارور NoReverseMatch در جنگو

زمانی که میخوام url یک ابجت رو با استفاده از get_absolute_url بدست بیارم به این ارور میخورم دوستان میشه لطف کنید راهنمایی کنید






خیلی کوتاه سعی میکنم یه تیکه کد بدم خدمتت که استفاده کنی :‌

model.py

from django.db import models


class Library(models.Model):
    title = models.CharField()
    slug = models.SlugField()
    date = models.DateField()
    body = models.TextField()

    def __str__(self):
        return self.title


    def get_absolute_url(self):
        return "/library/{}/".format(self.slug)


views.py

from django.views.generic import ListView, DetailView
from .models import Library
from django.utils import timezone

class LibraryListView(ListView):
    model = Library
    paginate_by = '20'
    queryset = Library.objects.all().order_by('-date')

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['now'] = timezone.now()
        return context


class LibraryDetailView(DetailView):
    model = Library

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['now'] = timezone.now()
        return context

urls.py 

from django.urls import path
from .views import LibraryListView, LibraryDetailView


app_name= 'library'

urlpatterns = [
    path('library', LibraryListView.as_view(), name='library'),
    path('library/<slug:slug>/', LibraryDetailView.as_view(), name='library-detail'),
]

libarary_list.html


{% if library_list %}
{% for library in library_list %}
<a href='{{ library.get_absolute_url }}' target="_top">
{{ library.title}}
{{library.date|date:"M Y"}}
{% endfor %}
{% else %}
 Ops , Nothing here :(
{% endif %}


1 پسندیده

خوب ببخشید الان دوباره نگاه کردم و نسبت به پروژه خودتون یه سری اصلاحات رو میگم خدمتتون


models.py 

from django.db import models
from django.urls import reverse

class Band(models.Model):
    name = models.CharField(max_length=64)
    slug = models.SlugField()

    def get_absolute_url(self):
        return reverse('band-detail', kwargs={'slug': self.slug })

class Album(models.Model):
    band = models.ForeignKey(Band , on_delete=models.CASCADE)
    name = models.CharField(max_length=64)
    slug = models.SlugField()

    def get_absolute_url(self):
        return reverse('album-detail', kwargs={'slug': self.slug })

urls.py

from django.urls import path
from .views import BandListView,BandDetailView, AlbumListView, AlbumDetailView

urlpatterns = [
    path('band/', BandListView.as_view() , name='band'),
    path('band/<slug:slug>', BandDetailView.as_view(), name='band-detail'),
    path('album/', AlbumListView.as_view(), name='album'),
    path('album/<slug:slug>', AlbumDetailView.as_view(),name='album-detail'),
]

album_list.html

{% if album_list %}
{% for album in album_list %}
<a href='{{ album.get_absolute_url }}'>album detail Link</a>
<a href='{{ album.band.get_absolute_url }}'>band details Link</a>
{{ album.band}}
{{ album.name}
{% endfor %}
{% else %}
 Ops  :(
{% endif %}
1 پسندیده

https://django-taggit.readthedocs.io/en/latest/

برای تگ زدن هم میتونید از این کتابخانه استفاده کنید

1 پسندیده