如何使用Django从另一个视图导入函数?

时间:2017-12-06 14:16:59

标签: python django django-views python-import django-import-export

我有这个文件夹层次结构:

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

study_time/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)

core/views.py上,我需要 day_studies()功能,所以我这样导入:

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

但是我收到了错误:

  

ImportError:无法导入名称'day_studies'

如何进行此输入?我不想回复所有代码。

2 个答案:

答案 0 :(得分:4)

您已经定义了嵌套函数。这在包含函数之外是不可见的;事实上,从外部看不到它几乎是在Python中定义嵌套函数的唯一好理由。不要那样做;将其移到study_time函数之外。

(另外,不要使用像这样的双下划线前缀。它们在类之外没有任何意义;甚至在那里你应该很少使用它们。)

答案 1 :(得分:0)

内部函数不可访问,因为它只是该函数的本地代码。它在views.py中并非通用。所以要对此作出区分。

通过这个来更好地理解!! https://realpython.com/blog/python/inner-functions-what-are-they-good-for/

快乐的编码!!