视图在Python3中不存在,但在Python2中存在

2024-04-25 04:31:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我的电脑里有以下代码视图.py地址:

def view1(request):
  # do view1-y things
  return view_common(request, mode=True)

def view2(request):
  # do view2-y things
  return view_common(request, mode=False)

# not registered in urls.py
def view_common(request, mode):
   return render(...)

这在Python3下不起作用,导致“视图不存在”错误。我怎样才能解决这个问题?你知道吗


Tags: 代码pyview视图returnmoderequest地址
1条回答
网友
1楼 · 发布于 2024-04-25 04:31:05

问题在于Python解释您的视图的方式。你知道吗

当视图方法view1被执行时,view_common仍然不在上下文中。这就是问题所在。将helper方法移动到视图之前,使其处于上下文中。这将解决这个问题。你知道吗

下面是一个演示:

假设有一个python文件test.py

x = add_three(2, 3, 4)
print (x)

def add_three(x, y, z):
    return plus(plus(x, y), z)

def plus(x, y):
    return x + y

输出:

$:~$ python3 test.py 
Traceback (most recent call last):
  File "test1.py", line 1, in <module>
    x = add_three(2, 3, 4)
NameError: name 'add_three' is not defined

但如果方法被重新安排为:

def add_three(x, y, z):
    return plus(plus(x, y), z)

def plus(x, y):
    return x + y

x = add_three(2, 3, 4)
print (x)

输出如预期。注意,plus在从add_three调用时已经在上下文中。因此它不会失败。你知道吗

相关问题 更多 >