0

私は、このフォルダ階層があります。私のstudy_time/views.pyオンDjangoで別のビューから関数をインポートするには?

|---- saga 
    |---- core 
     |---- views.py 
    |---- study_time 
     |---- views.py 

を、私はこの機能を持っている:私のcore/views.pyオン

def study_time(request): 
    def tasks_subjects(week_day, key): 
     #Code here 
     return __tasks 

    def day_studies(week_day): 
     __tasks_subjects = tasks_subjects(week_day, 0) 
     #Code here 
     return __studies 

    return render(request, 'study_time.html', context) 

を、私はday_studies()機能を必要とするので、私は輸入していますこのように:

from saga.study_time.views import day_studies 
    def home(request): 
     day_progress = day_studies(datetime.date.today().isoweekday()) 

エラー:

ImportError: cannot import name 'day_studies'

どうすればこのインポートを行うことができますか?私はすべてのコードに返信したくありません。

答えて

4

ネストされた関数を定義しました。これは、単に包含する関数の外側には見えません。実際、外部から見えないようにするのは、Pythonでネストされた関数を定義する唯一の理由です。それをしないでください。 study_time機能の外に移動してください。

(また、彼らはクラスの外にどんな意味がありません。そのように二重アンダースコアの接頭辞を使用しません。。。今までにそれらを使用する場合は、めったにでもそこなければならないと)

+0

私はそれをしましたが、うまくいきませんでしたので、私はここで尋ねました。私はそれをもう一度やって、その問題は識別の問題であることを見ました。二重のアンダースコアについては、私はそのようなものを使用していない、ちょうど今、私が変数を配置していたとき、今それはすべてOKです。ご協力ありがとうございました! –

0

内側の機能ではありませんなぜなら、それはその関数のローカルコードだけであるからです。それはviews.pyの中では一般的ではありません。だからこれを区別してください。

理解を深めるためにこれを実行してください。

ハッピーコーディング!

関連する問題