Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django从其他应用程序导入代码_Python_Django_Nameerror - Fatal编程技术网

Python Django从其他应用程序导入代码

Python Django从其他应用程序导入代码,python,django,nameerror,Python,Django,Nameerror,我有一个包含多个应用程序的项目。 所以当我想从我使用的另一个应用程序中获取一些代码时 from app.pyfile import * 或 更具体地说: 我有一个名为“commonapp”的应用程序,其中有一些我在所有其他应用程序中使用的常用内容。在这个应用程序中,我有一个通用的.py文件,其中有一些函数,包括一个名为my_response(request,template,context)的函数,它会导致名称错误。现在这个特殊的函数总是在其他函数中被调用 例如: from commonapp

我有一个包含多个应用程序的项目。 所以当我想从我使用的另一个应用程序中获取一些代码时

from app.pyfile import *

更具体地说: 我有一个名为“commonapp”的应用程序,其中有一些我在所有其他应用程序中使用的常用内容。在这个应用程序中,我有一个通用的.py文件,其中有一些函数,包括一个名为
my_response(request,template,context)
的函数,它会导致名称错误。现在这个特殊的函数总是在其他函数中被调用

例如:

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
这会引发一个名称错误“未定义全局名称我的\u响应”

我知道名字错误是什么,但为什么在这里?如果无法导入某些内容,甚至“未定义全局名称a”,我希望会发生导入恐怖事件

我错过了什么

更新:

下面是一个屏幕截图,显示了
my\u响应(请求、模板、上下文)
的位置以及应用程序的文件结构

当你这样做的时候

from commonapp.common import *
可以从包中导入的所有内容都将导入当前全局命名空间。显然,
my_response
没有导入(出于某种原因)。 因此,您会得到
namererror
,因为
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
s通常是通过从程序包导入不存在的函数导入例程来引发的,并且在其他上下文中不会遇到

from commonapp.common import *
可以从包中导入的所有内容都将导入当前全局命名空间。显然,
my_response
没有导入(出于某种原因)。 因此,您会得到
namererror
,因为
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
s通常是通过从包导入不存在的函数导入例程而产生的,在其他上下文中不会遇到。

Er,什么?您会得到一个名称错误,因为我的\u响应没有在那里定义或从common导入。你有什么不明白的?当我尝试从commonapp.common导入我的\u响应时,我得到了一个导入错误。当我从其他应用程序导入的所有其他内容都被很好地导入时,我无法理解这是如何实现的。但这两个错误都表明
commonapp.common
不包含名为
my\u response
的函数。这怎么不清楚?也许你应该把文件拿出来。呃,什么?您会得到一个名称错误,因为我的\u响应没有在那里定义或从common导入。你有什么不明白的?当我尝试从commonapp.common导入我的\u响应时,我得到了一个导入错误。当我从其他应用程序导入的所有其他内容都被很好地导入时,我无法理解这是如何实现的。但这两个错误都表明
commonapp.common
不包含名为
my\u response
的函数。这怎么不清楚?也许您应该显示该文件。好的,当您从另一个文件导入函数时,它不应该在全局上下文中吗?如果我在def myInfo()中导入我的_response(),它就可以正常工作。。。所以它不能在全局中导入,但可以在本地函数中导入?我不明白。我的意思是如何从其他应用程序导入模型?可能是因为存在循环导入问题,即commonapp.common通过更多嵌套导入直接或间接导入包含
myInfo()
的文件。还要注意的是,从包导入开始导入,比如
*
,被认为是一种不好的做法,应该避免,除非你真正理解为什么你需要导入所有东西。我已经考虑过了,但我似乎找不到联系。myInfo()位于另一个应用程序中,也位于自定义文件中,例如,不嵌套在ListView中。它只是一个函数,从特定的模型中获取一些数据。my_response()应该是用于呈现模板的“路路通”函数。它与Django1.5一起工作。这是在我迁移到1.8时发生的。而且我不经常做导入。我在这里尝试了它,因为我有错误。请确保您正在导入正确的文件。首先,删除所有*.pyc文件,然后打开django shell,导入commonapp并检查它的
\uuuuu file\uuuu
属性。这条路对吗?接下来,尝试导入
我的\u响应
。一般来说,如果你能在shell中完成,那么它应该在代码中工作。当我试图直接导入我的_响应时,我确实因为循环导入问题而出错。如果我导入*,它显然会绕过它,并且原始模板会正确呈现OK,当您从另一个文件导入函数时,它不应该在全局上下文中吗?如果我在def myInfo()中导入我的_response(),它就可以正常工作。。。所以它不能在全局中导入,但可以在本地函数中导入?我不明白。我的意思是如何从其他应用程序导入模型?可能是因为存在循环导入问题,即commonapp.common通过更多嵌套导入直接或间接导入包含
myInfo()
的文件。还要注意的是,从包导入开始导入,比如
*
,被认为是一种不好的做法,应该避免,除非你真正理解为什么你需要导入所有东西。我已经考虑过了,但我似乎找不到联系。myInfo()位于另一个应用程序中,也位于自定义文件中,例如,不嵌套在ListView中。它只是一个函数,从特定的模型中获取一些数据。my_response()应该是用于呈现模板的“路路通”函数。它与Django1.5一起工作。这是在我迁移到1.8时发生的。而且我不经常做导入。我在这里尝试了它,因为我有错误。请确保您正在导入正确的文件。首先,删除所有*.pyc文件,然后打开django shell,导入commonapp并检查其属性