2016-05-22 20 views
2

Ich habe eine MonthArchiveView für Ereignisse auf meiner Website. Wie kann ich das Archiv standardmäßig auf den aktuellen Monat zu machen, anstatt eine Ausnahme zu erheben, wenn kein Jahr und Monat vorgelegt wird (zB wenn ein Nutzer gerade/events /?Standardeinstellung für den aktuellen Monat in MonthArchiveView

# urls.py 
url(r'^events/$', EventMonthView.as_view(), name="event_month"), 
url(r'^events/(?P<year>[0-9]{4})/(?P<month>[0-9]+)/$', EventMonthView.as_view(month_format='%m'), name="event_month"), 

#views.py 
class EventMonthView(MonthArchiveView): 
    template_name = "events.html" 
    queryset = Event.objects.all() 
    date_field = "date" 
    allow_future = True 
    month_format='%m' 
    year_format='%Y' 

Antwort

3

könnten Sie überschreiben die get_month und get_year Methoden, so dass sie einen Standardwert zurückgeben:

from django.http import Http404 
from django.utils.timezone import now 
from django.views.generic import MonthArchiveView 


class EventMonthView(MonthArchiveView): 
    # ... 

    def get_month(self): 
     try: 
      month = super(EventMonthView, self).get_month() 
     except Http404: 
      month = now().strftime(self.get_month_format()) 

     return month 

    def get_year(self): 
     try: 
      year = super(EventMonthView, self).get_year() 
     except Http404: 
      year = now().strftime(self.get_year_format()) 

     return year 
+0

Funktioniert wie ein Charme! Ich schätze die Hilfe wirklich. – setchock