Wie die URL Datum-basierte generischer Ansichten anpassen?
-
13-09-2019 - |
Frage
Hier ist mein URL-Muster:
news_info_month_dict = {
'queryset': Entry.published.filter(is_published=True),
'date_field': 'pub_date',
'month_format': '%m',
}
und
(r'^(?P<category>[-\w]+)/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<slug>[-\w]+).html$',
'object_detail', news_info_month_dict, 'news_detail'),
Aber sie haben einen Fehler gefällt das:
object_detail() got an unexpected keyword argument 'category'
Bitte helfen Sie mir. Dank!
Lösung
Ich denke, Sie Ihre eigene Sicht anstelle des generischen object_detail
schreiben, so etwas wie diese (nicht getestet)
import datetime
def view_entry(request, category, year, month, day, slug):
date = datetime.date(int(year), int(month), int(day))
entry = get_object_or_404(Entry, slug=slug, date=date, is_published=True, category=category)
return render_to_response('news_detail', {'object': entry})
Obwohl es möglich sein, kann es mit object_detail
zu tun, weiß ich nicht. - Ich sehr selten allgemeine Ansichten verwenden
Andere Tipps
In Ihrer URL Regex, alles in <brackets>
als Schlüsselwort Argument für die allgemeine Ansicht übergeben zu werden.
Das Problem ist, dass die allgemeine Ansicht Sie verwenden (object_detail
) nicht alle diese Argumente unterstützen (nämlich category
).
Wenn Sie eine category
Argument müssen, wickeln nur die Ansicht wie Nick oben vorgeschlagen und rufen Sie das von Ihrem URLconf.