2012-07-20 7 views
8

私はDjangoとPythonを初めて使っていて、たくさんの情報を読んだあと、グローバル関数をビューとして使用しないことにしました(多分グローバル関数に慣れていないためですが、 。問題は、私がチェックしているDjangoアプリケーションのほとんどがクラスベースのアプローチを使用していないということです。クラスベースのビューはDjangoコミュニティで広く使用されていますか?

これは私が間違った場所(私はDjangoチュートリアルで始まってからgithubで)でコードをチェックしているからですか?

将来私はもっと多くのDjangoプログラマーと作業したいと思っており、最初は非標準的なアプローチを採用したくないので、これを頼んでいます。

+0

両方見ることができますので、両方をご覧ください。可能なときにCBVを使用してください(CBVを動作させるために100行以上のコードを書く場合は、関数ベースのビューを使用する方が効率的です)。 CBVがうまくいくと、それらはうまく働きますが、はるかに優れていますが、すべてには限界があり、時には関数を使うほうが意味があります。 –

+0

@ChrisPrattありがとう、私は両方の戦略を使用することを考えていた。あなたは、CBVを動作させるために100行以上のコードを書いていると言いますが、私は同意しますが、私は100行以上のコードをビュー関数に書くことについて考えていましたか?私はDjangoの経験はありませんが、テンプレートエンジンは他のフレームワークと比べて非常に強力ではないようですので、コントローラにコードを書く必要があります。 – Demian

+1

これは難しくて速い数字ではありません。私は、あなたが必要とするようにCBVを動作させるためのコードをたくさん書いているのであれば、機能ベースのビューを使うだけで効率的かもしれないかどうかを考えなければならないということを意味しています。テンプレートエンジンは、意図的にそのように動作しています。 Djangoの哲学では、HTMLとコードを混在させることは悪く、人間的かつ合理的に可能な限り避けるべきだと述べています。だからあなたのビューは、テンプレートが必要とするすべてのものを設定する必要があり、テンプレートは理想的には画面上にダンプするだけです。 –

答えて

10

1つの事実は、クラスベースのビューがDjango 1.3に追加されているということです。古いDjangoバージョンをサポートする予定がある場合は、汎用ビューを使用する必要があります。たとえば、汎用アプリケーションを作成して起動するGitHubなどで、他の人が使うことができます。

機能ビューよりもクラスベースのビューを使用する場合は、これは使用例によって異なると思いますが、私のアドバイスはそれぞれの方法のadvantageを理解する必要があり、IMHOでは両方の実装を単一のプロジェクト。

別の偉大な記事CBV were a mistakeへの返信として、Nick Coghlanのこの素晴らしいarticleがありました。

希望しています。

+0

ありがとう!それは本当に有益だったし、記事を楽しんだ(私はルークプラントがいくつかの非常に良い点を持っていると思うが、彼は不完全なシナリオを分析するので、誤った結論に至る)。あるプロジェクトで両方のスタイルを使用すると、他のプログラマーが自分のコードを操作するのが問題になるか、それとも一般的なシナリオですか?再度、感謝します! – Demian

+0

@Demian:ご存知のように、誰かがDjango(> = 1.3)を使いたい場合は、両方のスタイルを学ぶべきです(あなたのチームメイトにもそうです)。 CBV vs FBV)をプロジェクト(IMHOは良い方法です)に入れておくと、問題があるのはなぜYよりもXを使うのかということを説明することだと思います。それぞれの利点を他のものよりも優先します。 – mouad

+0

言及した最後の記事は更新され、著者はCBVが常に悪いとは信じられません。実際、彼はCVBが輝いているケースがあると確信しています。 :) – MatheusJardimB

関連する問題