bu benim appname.urlskodlarım[appname:atolye(bu birTürkkelimesi)]
从django.conf.urls导入URL 从.views导入* urlpatterns = [
url(r'^index/$', atolye_index),
url(r'^(?P<id>\d+)/$', atolye_detail),
] ve bu benim atolye.views
从django.shortcuts导入渲染get_object_or_404 从.models导入atolye
def atolye_index(request): atolyes = atolye.objects.all() 返回render(request,'atolye_index.html',{'atolyes':atolyes})
def atolye_detail(请求,ID): atolye = get_object_or_404(atolye,id = id) 上下文= { 'atolye':atolye, } 返回render(request,'atolye_detail.html',上下文) Bu kodu kullanmak istiyorum amaişeyaramıyor。 Neyapmalıyım?
python:3.5.3 django:1.10 win7 Yeni birkullanıcıyım。 Kötüingilizcemiçinözürdilerim。
答案 0 :(得分:0)
我在这里有点猜测,因为您的异常回溯与标题或描述都不匹配,并且您的代码不可读,但是……
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)