Ich befolge ein Tutorial, um ein Blog zu erstellen. Der Code stimmt mit dem Tutorial überein. Der einzige Unterschied ist, dass ich Django verwenden 1.9 statt 1.8Django1.9: Kein Modell entspricht der angegebenen Abfrage
aufrufen Post
Modell in der Ansicht ohne
publish__year=year,
publish__month=month,
publish__day=day)
keine 404 Fehler zurückgibt - No Post matches the given query.
Dies ist view.py
def post_detail(request, year, month, day, post):
post = get_object_or_404(Post, slug=post,
status='published',)
#publish__year=year,
#publish__month=month,
#publish__day=day)
return render(request, 'blog/post/detail.html', {'post': post})
Das Modell Teil sieht so aus models.py
class Post(models.Model):
...
publish = models.DateTimeField(default = timezone.now)
...
Irgendwelche Ideen, warum die Abfrage nicht gefunden wird?
EDIT:
Die URL sieht aus wie localhost/blog/2016/07/30/second-post-entry/
def get_absolute_url(self):
return reverse('blog:post_detail', args=[self.publish.year,
self.publish.strftime('%m'),
self.publish.strftime('%d'),
self.slug])
Es scheint, dass diejenigen sind das Problem:
self.publish.strftime('%m'), # eg. == 07, but publish__month == 7
self.publish.strftime('%d') # eg. == 30, publish__day == 30
Wenn Sie "Kein Beitrag entspricht der angegebenen Abfrage" erhalten, bedeutet dies, dass es keinen Beitrag gibt, der Jahr, Monat und Tag entspricht. Wir wissen nicht, welche Posts Sie in Ihrer Datenbank haben, was ihr Veröffentlichungsdatum ist oder welche URL Sie besucht haben, daher können wir Ihnen nicht sagen, was das Problem darüber hinaus ist. – Alasdair
@Alasdair Die Struktur der URL ist was ich in meiner Datenbank finde: 'print (posts [1] .publish) 2016-07-30 17: 47: 28 + 00: 00' – user2853437
Okay. 7! = '07' self.publish.strftime ('% m')! = Publish__month ... also wie man den Monat mit 0 anruft? Was wäre jetzt der richtige Weg? – user2853437