1

以下は、Django Con EU トーク ビデオを見た後、ファースト クラス ベースのビューで作成したものです。

それは機能し、それが何をするかを理解しています。クラス ベース ビューとジェネリック クラス ベース ビューの違いがわかりません - どちらを作成したのですか?

class GroupListView(ListView):
    """
    List all Groups.
    """
    context_object_name = 'groups'
    template_name = 'contacts/home.html'

    def get_context_data(self, **kwargs):
        """
        Get the context for this view.
        """
        # Call the base implementation first to get a context.
        context = super(GroupListView, self).get_context_data(**kwargs)
        # Add more contexts.
        context['tasks'] = Upload.objects.filter(uploaded_by=self.request.user).order_by('-date_uploaded')[:5]
        context['unsorted'] = Contact.objects.unsorted_contacts(user=self.request.user).count()

        return context

    def get_queryset(self):
        """
        Get the list of items for this view. This must be an iterable, and may
        be a queryset (in which qs-specific behavior will be enabled).
        """
        queryset = Group.objects.for_user(self.request.user)
        return queryset 
4

3 に答える 3

4

Django には、いくつかの一般的な問題を解決しようとする一連のビューが付属しています。

  • オブジェクトの編集
  • 単一のオブジェクトの表示
  • オブジェクトのリストを表示する

これらのビューはさまざまなモデルに使用できるため、一般的なと呼ばれます。この場合の「ジェネリック」は、実装方法とは何の関係もありません。以前の Django バージョンでは、関数ビューがデフォルト (ビューは関数でした) でしたが、現在はクラスになっています。

あなたの例のビューは、実際にはクラスベースの汎用ビューから継承するクラスベースのビューです。

于 2013-06-19T13:11:03.840 に答える
3

クラスベースのビューは、(関数としてのビューではなく) Python クラスとして提供される任意のDjango ビューです。

DjangoのGeneric base Viewは、便利な組み込みビューのベースです。例:

  • リストビュー
  • CreateView
  • 詳細ビュー

それらはに基づいていdjango.views.generic.base.Viewます。

于 2013-06-19T13:11:47.920 に答える
1

ListViewは一般的なクラスベースのビューです (つまり、Django に付属しており、非常に一般的な機能を実装しており、より正確な処理のために自由に継承できます)。一方、GroupListViewは一般的ではありません - Django の一部ではないためです。

于 2013-06-19T13:09:19.890 に答える