2013-07-22 4 views
8

新しいDjangoプロジェクトでは、Class-Based Views(CBV)またはFunction-Based Views(FBV)のどちらを使用するのか不思議です。 Django's documentationによれば新しいDjangoプロジェクトでは、クラスベースビューまたは関数ベースビューを使用する必要がありますか?

クラスベースのビューは、Pythonは、関数の代わりにオブジェクトとしてビューを実装する別の方法を提供します。関数ベースのビュー

禅のPythonのために矛盾するよう

と比較すると、彼らは、特定の違いと利点を関数ベースのビューを置き換えますが、持っていないので、

を「それをする唯一の方法があります」これはより良い方法ですか? (これらのように、クラスベースの1.5以降です)

  • すべての汎用ビューを使用していないことを意味FBV

    を使用して、必ず

    1. これまでのところ、私は3つのだけの可能性を参照してください常にCBVを使用:

      これは、リクエスト処理オーダの決定に一定の問題があります。

      http://lukeplant.me.uk/blog/posts/djangos-cbvs-were-a-mistake/

      を参照してください。私はまた、全体のクラス階層を構築することは、パフォーマンスのために良いではないと思われます。その場合、FBVがまだ非難されていない理由を私は自分自身に尋ねるでしょうか?どこFBVにジェネリックCBVを置く

    2. は、残酷な定型コード

    の多くになり

    https://gist.github.com/spookylukey/2596285

    に応じて、あなたは他の方法を参照してください、または誰もが知っていますビューは行っている?

  • +0

    「誰が見ているのか知っていますか?」 - この質問はSOのためではなく、開発メーリングリスト/ IRCのためのものです。 –

    +1

    プロジェクトに最も合ったものを使用してください。関数ベースの*ジェネリック*ビューは時代遅れになるだろうと私は言います。関数ベースのビューはクラスベースのビューとは異なる問題を解決します。 –

    +0

    @GeorgeStocker:あなたのプロジェクトで最も意味のあるものを使うのは矛盾ではありませんか?...私は、関数ベースの一般的なwievが廃止されると言いますか?もしFBVが時代遅れになるなら、私はそれらを使うべきではありませんか?ほとんどの場合、fbvとcbvの両方が同じ問題に取り組んでいますが、どちらのプロジェクトでも両方を同じにして使うことはできませんか? – ProfHase85

    答えて

    3

    これは意見の問題であるが、個人的に私はこの上でルーク工場に反対し、私はClass Based Viewsと恋に落ちたんです。私は熱心にそれらを採用するDjangoのコミュニティからの抵抗の多くは、彼らが簡単に彼らが働いてどのように見ることができなかった(実装はミックスインの多くを使用し、従うことが難しいことができます)とドキュメントが欠けていた、という事実から生じ考えますそして、私は約ジェネリック CBVのとプレーンCBVの誤解の多くがあったと思います。 (あなたが最初の結果、約ジェネリック景色だった「ジャンゴクラスベースのビュー」をGoogleで検索し、これまで長い間)

    今(参照ドキュメントはずっと良くなっているし、それらを理解するために利用できるツールは素晴らしいですccbv.co.ukまたはpudb)。

    OOPを提案するのと同じ理由で、Class Based Viewsを学習して使用することをお勧めします。コードの繰り返しを減らし、コードの再利用(継承、ミックスイン)を増やします。つまり、DRYです。

    他のプロジェクトでは、他のプロジェクトの使用方法をチェックする価値がありますCBV ...最近のお気に入りのうちの1つがdjango-oscarです。

    関連する問題