0

私は巨大なviews.pyファイルを持っているので、それを と に分割しましviews.pyadmin_views.py。関数は他のファイルの関数に依存する傾向があるため、次のようにしました。

# views.py
from admin_views.py import a,b,c

# admin_views.py
from views.py import d,e,f

これにより循環依存関係が発生し、インポートが機能しないことがわかりました。この問題を解決する最善の方法は何ですか? ファイルの最後にインポート ステートメントを配置できることはわかっていますが、それはあまりエレガントではないようです。

4

3 に答える 3

0

循環インポートは外部キー関係と関係がありますか?

その場合、クラスを文字列として定義できます。

item = models.ForeignKey("SomeOtherClass")

私が通常e-satisが提案したように3番目のファイルにロジックを抽出することに失敗しました。

于 2012-05-04T23:33:41.217 に答える
0

views.py ファイルにコア ロジックを含めないでください。このコア ロジックを他の python ファイル (一部のロジックは models.py または forms.py に適しています) に配置し、views.py にインポートする必要があります。基本的に、ほとんどの場合、views.py ファイルをインポートする唯一の場所は urls.py ファイルです。urls.py ファイルは、次のような形式にすることもできます。

urlpatterns = patterns('management.views',
    #url(r'^index/$', direct_to_template, {'template': 'stats/index.html'},
    #    name="index"),          
    url(r'^pay_invoices/$', 'pay_invoices', name='pay_invoices'), 
)

これにより、基本的に views.py 関数をどこにもインポートする必要がなくなります。

于 2012-05-04T02:21:20.773 に答える
0

まず、ビュー パッケージを作成します。

--view
  |_ __init__.py
  |_ main.py # previewsly view.py
  |_ admin.py # previewsly view_admin.py

main次に、またはにインポートする必要がある部分を含む新しいファイルを追加しますadmin

--view
  |_ __init__.py
  |_ main.py 
  |_ admin.py 
  |_ base.py

次に、インポートを移動して、 から両方をインポートするようにしbaseます。

最終的には__init__、main et admin から必要なものをインポートします。インポートするすべてのものは__init__、ビューのインポートのものを使用してインポートできます。

于 2012-05-04T02:29:43.530 に答える