0

나는이 폴더 계층이 : 내 study_time/views.pyDjango를 사용하여 다른 뷰에서 함수를 가져 오는 방법은 무엇입니까?

|---- 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() 기능이 필요합니다, 그래서 수입하고있어 like :

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

중첩 된 함수를 정의했습니다. 이는 단순히 포함하는 함수 밖에서 볼 수 없습니다. 사실, 외부에서 보이지 않게하는 것은 파이썬에서 중첩 된 함수를 정의하는 유일한 이유입니다. 그렇게하지 마라. study_time 기능 외부로 이동하십시오.

은 (또한, 그와 같은 이중 밑줄 접두사를 사용하지 않는 그들은 클래스 외부의 어떤 이해가되지 않습니다.. 심지어 거기에 당신이 거의 만약에 이제까지 것이 그들을 사용한다)

+0

나는 그것을했다. 그러나 그것은 그렇게 일하지 않고 있었다. 그래서 나는 여기에서 물었다. 나는 그것을 다시했고 그 문제가 정체성과 관련 있다는 것을 알았다. 이중 밑줄에 관해서, 나는 그 것처럼 사용하지 않고있다, 잠시 동안, 내가 변수를 배열했을 때, 이제는 괜찮아. 도와 줘서 고마워! –

0

내부 기능이 아닌 왜냐하면 그 기능에 대해서만 로컬 코드이기 때문입니다. 그것은 views.py의 모든 것에 대해 일반적이지 않습니다. 그래서 이것을 구별하십시오.

이해를 돕기 위해 이동하십시오!

해피 코딩 !!

관련 문제