Ich habe eine Blog-App als Teil eines Django-Tutorials erstellt und kann die Bloglistenansicht mit dem Code von djangoproject - https://docs.djangoproject.com/en/1.9/topics/pagination/#using-paginator-in-a-view paginieren. Ich habe nur Probleme beim Abrufen von Prev/Next URL Slug Links basierend auf der aktuellen Seite Post View.Django - Einzelpostansicht, Vorherige/Nächste Links
model.py
class Film(Timestamp):
title = models.CharField(max_length=255)
slug = models.SlugField(unique=True)
image = ImageField(upload_to='thumb')
video = EmbedVideoField(blank=True)
director = models.CharField(max_length=255,blank=True)
cinematographer = models.CharField(max_length=255,blank=True)
producer = models.CharField(max_length=255,blank=True)
publish = models.BooleanField(default=False)
date_published = models.DateTimeField()
# override the admin name
class Meta:
verbose_name_plural = "Film Projects"
def __unicode__(self):
return self.title
# helper method
def get_absolute_url(self):
return "/film/%s/" % self.slug
def save(self, *args, **kwargs):
super(Film, self).save(*args, **kwargs)
views.py
# film single
def film_detail(request, slug):
film = Film.objects.get(slug=slug)
def get_next(self):
next_post = Film.get_next_by_date_published()
if next:
return next.first()
return False
def get_next(self):
prev_post = Film.get_previous_by_date_published()
if prev:
return prev.first()
return False
return render(request, 'film/film_detail.html', {
'film': film,
})
urls.py
url(r'^film/$', views.film_list, name='film_list'),
url(r'^films/(?P<slug>[-\w]+)/$', views.film_detail, name='film_detail'),
film_detail.html
<a href="{{ film.get_next_by_date_published }}">Next</a><br>
<a href="{{ film.get_previous_by_date_published }}">Previous</a>
Die obigen Links geben den nächsten und vorherigen Posttitel zurück, nicht den Slug und beinhalten auch den aktuellen Post Slug, zum Beispiel - http://127.0.0.1:8000/films/sea-chair/Can Chair.
Für solch eine einfache Sache (obwohl ich zu Django und Python neu bin), habe ich Tage ohne Glück forschen, ich hoffe, dass jemand helfen kann!
Hallo Alasdair, diese Lösung funktionierte absolut perfekt, ich Ihnen nicht genug danken kann !!! Nach Tagen der Suche nach einer Lösung, bekam ich endlich den Mut zu fragen und die erste Antwort hat es geschafft. Danke nochmal Kumpel :) – darcemac