2012-03-09 7 views
0

電子メールなどを送信するには、views.pyファイルの外側にあるコードを使用します(コードが多すぎます)。私は私がするrunserverでビュー外のモデルを使用する

from django.shortcuts import render_to_response 
from django.core.mail import send_mail 

from mysite.myapp.models import MyModel 

で始まるappフォルダに「tools.py」という名前のファイルを作成し、私はビューで同じインポートを使用して、私はエラーにImportError: cannot import name MyModel

を持っている。これは奇妙です。 pyファイルと問題はありません...

何か考えですか?おかげで

答えて

1

ほとんどの場合、あなたは循環インポートを持っています。このtools.pyファイルをmyapp/models.pyにインポートしていますか?

+0

はい、あります。私はモデル内のツールで定義された関数を使用します。私は持ってはいけないと思います。 –

+1

一般的に、循環インポートは設計上の欠陥を示します。ツールにモデルとモデルが必要なツールが必要な場合は、実際にはすべて同じモジュールの一部にする必要があります。ですから、おそらく関連するアイテムをmyapp/models.pyに移動するべきでしょう。 –

0

物事のカップル:

  • はあなたの 「tools.py」ファイルが置かれているフォルダ内の自分ののinitの.pyファイルを持っていることを確認し、これはなぜ何かがないかもしれない一般的な理由です見つけられた。

私はあなたの要件に非常に似た何かを設定する作業を進めています。

これをオン/オフプロセス(例えば、cronjob、workerなど)にする場合は、次のようにします。それを実行するためにこれはあなたを可能にするなど、cronジョブを実行できます、セットアップを

#!/usr/bin/env python 
######################################################################### 
# Required DO NOT REMOVE 
######################################################################### 
import os 
import sys 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "appname.settings") 
######################################################################### 

# Import My Models, or Run an Include to Handle Processing. 
from app.models.model import * 

# Do Stuff to Test (I suggest a simple insert into the model or pull and return content) 

保存あなたの「manage.pyは」で保存されているのと同じフォルダにこのファイルは、あなたがこれを直接呼び出すことができますし、それが処理しなければなりません は、urls.pyファイルからビューをレンダリングする前にdjangoが実行するプロセスのいくつかを実行しないため、少し少ないコードしか持たないようにしてください。

これが不明な場合は、お気軽にコメントしてください。訂正または詳細を編集します。

すべて最高

関連する問題