2011-02-05 11 views
2

いくつかのビューで作成したたくさんの関数を、他の多くのビューで再利用する必要があります。クラスを作成してクラスに入れる必要はありますか?もしそうなら、Djangoでどのように正確に行う必要がありますか?そして、私はどのように新しいビューでそれらを呼び出して起動しますか?django - 多くのビューで関数を再利用

答えて

7

ジャンゴビューは単なるPythonの機能です。他のPythonコードと同様に、他のPython関数を呼び出すことができます。関数を.pyファイルに入れ、インポートして関数を呼び出します。

もちろん、関数を保持するクラスを作成することは他の理由からも意味がありますが、ビューから呼び出す必要はありません。

+0

myfunctions.pyと呼ばれる私のdjangoプロジェクトのルートにファイルを作成し、そこに関数を配置すると、私のビューでどのように呼び出せますか? – avatar

1

私の視点から見ると、あなたのプロジェクトで広く使われている機能がたくさんある場合は、これをいくつかの別々のアプリケーションに入れるのが理にかなっています。私はこの目的のために 'contrib'という名前のモジュールを作成します。将来このコードを維持する時間を避けることができます

+0

私は自分のモジュールをdjangoでどのように作成しますか? – avatar

+1

実際にはモジュールcatはちょうど__init__.pyファイルが入っているディレクトリで、あなたのコードをどこに置くことができますか? 'my_module import something'のように将来これをインポートするか、put_htmlを他のファイル 'my_module.module_file import something'から入れます – rootart

+0

新しいビューで関数をインスタンス化するのですか? – avatar

3

解決策は、あなたのアプリケーションフォルダにmyfunctions.pyファイルを作成し、ビューにインポートすることです。あなたのビューファイルは次のようになります:

import myfunctions 

def my_view(request): 
    ..... 
    foo = myfunctions.bar() 
    .... 
+0

私はfoo = myfunctions.bar()と似たようなことをしましたが、myviews.bar()は新しいビューにあったので実行するだけです。今私はfoo = myfunctions.bar()を実行すると何も起こりません。 – avatar

1

あなたはDjangoに複雑に見えます。 Djangoはもう一つのPythonアプリケーションであり、Pythonの世界に住んでいます。たとえば、library.pyファイルを作成し、必要な場所にこのファイルをインポートすることができます(ライブラリの関数が必要なモジュールで)。データベースからデータを取得するためにライブラリの関数が必要な場合は、単にmodelをlibrary.pyにインポートして使用してください。

Djangoには、「モジュール」というような大きな考えはありません。あなたはアーキテクチャを作成し、あなたのケースで何がモジュールであるかを定義することができます。一般的に、これはそこからファイルをインポートできるように .pyファイル内の単純なディレクトリです。

希望しました。

関連する問題