2016-05-22 5 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

関連する問題