Django 从其他应用导入代码
Django import code from other apps
我有一个包含多个应用程序的项目。
所以当我想要来自另一个应用程序的一些代码时,我使用
from app.pyfile import *
或
from app.pyfile import specific_function
更具体地说:
我有一个名为 'commonapp' 的应用程序,其中有一些我在所有其他应用程序中使用的常用内容。在这个应用程序中,我有一个 common.py 文件,其中有一些函数,包括一个名为 my_response(request,template,context)
的函数,它会导致 NameError。现在这个特定的函数总是在其他函数中被调用。
例如:
from commonapp.common import *
def myInfo(request):
context = {}
data = ''
data = SomeModel.objects.all()
template = 'path/to/info.html'
context['data'] = data
a = my_response(request,template,context)
return a
这引发了一个 NameError "global name my_response is not defined"
我知道 NameError 是什么,但为什么在这里?如果无法导入某些内容甚至 "global name a is not defined" .
,我会期待一个 ImportError
我在这里错过了什么?
更新:
这是显示 my_response(request,template,context)
位置和应用程序文件结构的屏幕截图。
当你
from commonapp.common import *
所有可以从包中导入的东西都被导入到当前的全局命名空间中。显然 my_response
没有导入(出于某种原因)。
所以,你得到 NameError
,因为 my_response
在它执行时被解析,即在
# Python tries to lookup `my_response` in local and then global context
# But, it can't find it, thus NameError exception occurs.
a = my_response(request,template,context)
和 ImportError
通常通过导入例程引发,例如 from package import non_existing_function
,在其他上下文中不会遇到。
我有一个包含多个应用程序的项目。 所以当我想要来自另一个应用程序的一些代码时,我使用
from app.pyfile import *
或
from app.pyfile import specific_function
更具体地说:
我有一个名为 'commonapp' 的应用程序,其中有一些我在所有其他应用程序中使用的常用内容。在这个应用程序中,我有一个 common.py 文件,其中有一些函数,包括一个名为 my_response(request,template,context)
的函数,它会导致 NameError。现在这个特定的函数总是在其他函数中被调用。
例如:
from commonapp.common import *
def myInfo(request):
context = {}
data = ''
data = SomeModel.objects.all()
template = 'path/to/info.html'
context['data'] = data
a = my_response(request,template,context)
return a
这引发了一个 NameError "global name my_response is not defined"
我知道 NameError 是什么,但为什么在这里?如果无法导入某些内容甚至 "global name a is not defined" .
,我会期待一个 ImportError我在这里错过了什么?
更新:
这是显示 my_response(request,template,context)
位置和应用程序文件结构的屏幕截图。
当你
from commonapp.common import *
所有可以从包中导入的东西都被导入到当前的全局命名空间中。显然 my_response
没有导入(出于某种原因)。
所以,你得到 NameError
,因为 my_response
在它执行时被解析,即在
# Python tries to lookup `my_response` in local and then global context
# But, it can't find it, thus NameError exception occurs.
a = my_response(request,template,context)
和 ImportError
通常通过导入例程引发,例如 from package import non_existing_function
,在其他上下文中不会遇到。