2016-05-22 41 views
2

我有我的網站上的事件MonthArchiveView。我怎樣才能使存檔默認爲當前的月份,而不是拋出一個異常,當沒有年份和月份提交的(例如,如果用戶訪問剛剛/事件/?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' 

回答

3

您可以覆蓋get_monthget_year方法使它們返回一個默認值:

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

工作就像一個魅力!我真的很感謝幫助。 – setchock

相關問題