我在写一个Django应用程序时遇到问题。我有一个视图* project_detail *,它应该仅限于该项目的项目负责人。我用一个独立的文件 helpers.py 中定义的装饰器解决了这个问题。如果发生错误,则会调用另一个视图错误。以下是两个文件 views.py 和 helpers.py
#views.py#
from projectmanagement.helpers import is_projectleader
@is_projectleader
def project_detail(request,id):
...
def error(request, errormessage)
....
return render_to_response(...)
--------------------------------------
#helpers.py#
def is_projectleader():
....
if not request.user in project.projectleaders:
return error(request,errormessage="You are not a projectleader")
....
现在我收到错误,错误未定义,但如果我添加
from projectmanagement.views import error
我收到错误,我无法导入错误。你有什么建议吗?
答案 0 :(得分:1)
导入模块本身,并参考该模块的属性。
答案 1 :(得分:1)
首先 - 请写完整个堆栈跟踪和错误消息。 第二 - 如果你将所有内容放在一个文件中(例如views.py)会发生什么。它似乎是循环依赖 - 来自views.py你导入helpers.py;来自helpers.py,您正在导入views.py。
答案 2 :(得分:1)
您无法同时从另一个模块导入一个模块,反之亦然。将error
函数的定义移至helpers.py
或为此类视图创建新模块。