2016-05-22 1 views
2

J'ai un MonthArchiveView pour les événements sur mon site. Comment puis-je faire défaut d'archive au mois en cours au lieu de soulever une exception, en l'absence de l'année et le mois est soumis (par exemple, si un utilisateur visite juste/événements /?Par défaut au mois en cours dans 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' 

Répondre

3

Vous pourriez remplacer le get_month et get_year méthodes afin qu'ils retournent une valeur par défaut:

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

Fonctionne comme un charme! J'apprécie vraiment l'aide. – setchock