2016-05-20 3 views
1

私は家のためのTemplateViewとイベント主催者のためのウェブサイトのページを持っています。今、私はこのような両方のテンプレートの次の3つのイベントのリストをテンプレートに含める:このテンプレートは、両方のページに含まれるべきであるのでdjangoでの一般的なビューの組み込み - それを正しい方法で行うには?

{% include "next-events.html"%} 

を、私は次のイベントのためにリストビューを書くことについて考えて、それは私の家にも見解にも含まれています。

class NextEventsView(ListView): 
    """ a preview of the next events """ 
    queryset = Event.objects.filter(date__gte=datetime.date.today()).order_by('date')[:3] 
    context_object_name = 'next_events' 

class HomePageView(TemplateView, NextEventsView): 
    template_name = "home/home.html" 

class AboutPageView(TemplateView, NextEventsView): 
    template_name = "home/about.html" 

しかし、私はListViewの一般的なビューがそのobject_listを取得する方法を完全に理解していません。

HomePageViewにOBJECT_LISTを追加することで解決することができ
AttributeError: 'HomePageView' object has no attribute 'object_list' 

、それが適切なソリューションにすることはできません。私はこのような含まれている場合、私は次のエラーを取得します。

どのように説明すればよいのですか?そのような組み込みを正しい方法で行う方法はありますか?

ありがとうございます!

答えて

2

スーパークラスの表示方法が間違っています。 ListViewのメソッドの中には、TemplateViewのメソッドよりも特定のものがありますが、後者が最初にリストされているため、代わりにメソッドが見つかるはずです。

ただし、TemplateViewから継承する必要はまったくないようです。 ListViewは既にありますが、とにかくtemplate_nameを設定することができます。継承からTemplateViewをドロップするだけです。

+0

ありがとう! – setchock

関連する問題