UnboundLocalError - 赋值前引用的局部变量'app'
UnboundLocalError-local variable 'app' referenced before assignment
这是我的 appname.urls 代码 [应用名称:atolye(这是一个土耳其语单词)]
从django.conf.urls导入url
从 .views 导入 *
url模式=[
url(r'^index/$', atolye_index),
url(r'^(?P<id>\d+)/$', atolye_detail),
]
这是我的 atolye.views
从 django.shortcuts 导入渲染,get_object_or_404
来自 .models 导入车间
def atolye_index(请求):
atolyes=atolye.objects.all()
return 渲染(请求,'atolye_index.html',{'atolyes':atolyes})
def atolye_detail(请求, id):
工作室 = get_object_or_404(atolye, id=id)
上下文 = {
'atolye': 车间,
}
return 渲染(请求,'atolye_detail.html',上下文)
我想使用此代码,但它不起作用。我该怎么办?
python: 3.5.3 django: 1.10 win7 我是新用户。抱歉我的英语不好。
我在这里有点猜测,因为你的异常回溯与你的标题或描述都不匹配,而且你的代码不可读,但是…
from .models import atolye
# …
def atolye_detail(request, id):
atolye = get_object_or_404(atolye, id=id)
这最后一行可能是例外的那一行,未绑定的本地可能不是 app
或您提到的另一行而是 atolye
,对吗?
问题在于,如果您在函数中的任何位置分配一个名称,该名称在该函数中始终是局部变量。
所以,因为这里有 atolye =
,所以 atolye
是一个局部变量。即使在 get_object_or_404(atolye, id=id)
。而且,由于该调用发生在您将任何内容分配给 atolye
之前,局部变量没有值。
我不确定你想在这里做什么,但有两种可能性。
如果您不是要替换 atolye
的全局值,只需使用不同的名称:
def atolye_detail(request, id):
my_atolye = get_object_or_404(atolye, id=id)
context = { 'atolye': my_atolye, }
return render(request, 'atolye_detail.html', context)
如果您是试图替换atolye
的全局值,您需要一个global
声明者:
def atolye_detail(request, id):
global atolye
atolye = get_object_or_404(atolye, id=id)
context = { 'atolye': atolye, }
return render(request, 'atolye_detail.html', context)
这是我的 appname.urls 代码 [应用名称:atolye(这是一个土耳其语单词)]
从django.conf.urls导入url 从 .views 导入 * url模式=[
url(r'^index/$', atolye_index),
url(r'^(?P<id>\d+)/$', atolye_detail),
] 这是我的 atolye.views
从 django.shortcuts 导入渲染,get_object_or_404 来自 .models 导入车间
def atolye_index(请求): atolyes=atolye.objects.all() return 渲染(请求,'atolye_index.html',{'atolyes':atolyes})
def atolye_detail(请求, id): 工作室 = get_object_or_404(atolye, id=id) 上下文 = { 'atolye': 车间, } return 渲染(请求,'atolye_detail.html',上下文) 我想使用此代码,但它不起作用。我该怎么办?
python: 3.5.3 django: 1.10 win7 我是新用户。抱歉我的英语不好。
我在这里有点猜测,因为你的异常回溯与你的标题或描述都不匹配,而且你的代码不可读,但是…
from .models import atolye
# …
def atolye_detail(request, id):
atolye = get_object_or_404(atolye, id=id)
这最后一行可能是例外的那一行,未绑定的本地可能不是 app
或您提到的另一行而是 atolye
,对吗?
问题在于,如果您在函数中的任何位置分配一个名称,该名称在该函数中始终是局部变量。
所以,因为这里有 atolye =
,所以 atolye
是一个局部变量。即使在 get_object_or_404(atolye, id=id)
。而且,由于该调用发生在您将任何内容分配给 atolye
之前,局部变量没有值。
我不确定你想在这里做什么,但有两种可能性。
如果您不是要替换 atolye
的全局值,只需使用不同的名称:
def atolye_detail(request, id):
my_atolye = get_object_or_404(atolye, id=id)
context = { 'atolye': my_atolye, }
return render(request, 'atolye_detail.html', context)
如果您是试图替换atolye
的全局值,您需要一个global
声明者:
def atolye_detail(request, id):
global atolye
atolye = get_object_or_404(atolye, id=id)
context = { 'atolye': atolye, }
return render(request, 'atolye_detail.html', context)