2012-03-15 10 views
0

私は自分のサイトに「James Bennett - Practical Django Projects、2nd Edition(2009)」というニュースを掲載しました。だから私は日付ベースのビューを使用しています。これはdjango-1.4で非推奨になります。ビューとURLをクラスベースのビューに変換するにはどうすればよいですか?あなたはこれを見たことがありますか、ちょうどリンクを投稿してください、私は少なくともMonthMixinのための実際の例を見つけることができません。MonthMixinでクラスベースのビューを使用する例を共有できますか?

+0

[that](https://docs.djangoproject.com/en/dev/topics/generic-views-migration/)を見たことがありますか?関数ベースのクラスビューをクラスベースのビューに変換したい場合に役立ちます。 – j0ker

+0

まあ、ありがとう、私はちょうどmixinsが何であるか理解していないので、私はクラスベースのビューの恐怖を持って:)私の目は今開いた:)そしてdjango.views.generic.date_basedは、デフォルトでニュースエントリ。私はクラスベースのビューでこれを解決する方法に問題があると信じています。 –

答えて

2

Djangoには、すべての新しいクラスベースのビューとそのミックスインが含まれます。detailed listがあります。

特別なことをしない限り、直接MonthMixinを使用する必要はありません。月単位の一般的なアーカイブビューの場合は、MonthArchiveViewを使用します。それをサブクラスして行きなさい。

さらにお手伝いが必要な場合は、必要なものを詳細に指定する必要があります。

+0

私はmixinsが必須であると思うので、私の頭脳は固まっています。私はMonthMixinを直接使う必要はないと言ったとき、私はリンクを見つけました - http://martinogden.me/2011/03/27/quick -look-django-13-class-views /私はそれをそうする必要がありますか? –

+0

全くありません。 'MonthArchiveView'にはすでに' MonthMixin'が含まれています。それは行く準備ができています。繰り返しますが、特定の問題が発生している場合は、その詳細を記述します(質問を編集し、コメントにコードを追加しないでください)。 –

+0

私の答えとクリスの答えの両方にフォローアップしてください。あなたはDjangoのドキュメントを見て、一般的なCBVに沿ってチェーンの上に行くことができます。このようにして、どのようなビューが何を提供しているのか、何がオーバーライドできるのか、本当に完全なカスタムミックスインセットアップが必要なのかを知ることができます。 – eusid

0

CBV、具体的には「汎用クラスベースのビュー」をPythonクラスの大きなツリーと考えてください。最も簡単なクラスから始める。それぞれが互いにサブクラス化し、オーバーライドします。たとえば、ArchiveIndexViewは通常、サイトのインデックスのサブクラスとなるビューです。これは、最新というコンテキスト変数を追加します。ビュークラスでは、date_field、num_latest、および2つのオプションを指定する必要があります。これらの引数はURLConfで渡すこともできます。しかし、views.pyにロジックを持たせるのは、もっときちんとしてきれいです。一度あなたがそれを取得すると非常に便利です。本質的にあなたの脳と同じくらい強力な自分のミックスインを作ることができます。それを超えると、あらゆるページで利用可能なもの、おそらくは最悪の場合はテンプレートタグやカスタムコンテキストプロセッサが必要になることもあります。

関連する問題