Форум сайта python.su
0
Здравствуйте.
Не понимаю почему не могу обратиться к переменной ведь она создается и в локальных переменных видна?
for k,v in d.items():
exec('%s=%s' % (k,v))
if “subbasic” in locals():
for x in subbasic:
x
После выполнения функции exec появляется queryset c именем subbasic. Собственно проверка if находит ее
в локальных переменных, да и в дебагере видно. Но при обращении выдается ошибка “name ‘subbasic’ is not defined”.
Офлайн
0
Не совсем ясно, что у вас внутри k и v.
Попробуйте, поставить кавычки:
exec('{}="{}"'.format(k, v)); exec('%s="%s"' % (k, v))
Офлайн
0
Попробовал кавычки поставить, вместо queryset там становится строка, но проблему это не решает т.к. ошибка в инициализации переменной.
Внутри переменных:
к ='subbasic'
v='SubBasic.objects.filter(id = 6)'
Вообще идея была задать не жестко прошитые в коде переменные, а заполняемые в зависимости от модели.
Например
subbasic='SubBasic.objects.filter(id = 6)'
сloudmsg='CloudMsg.objects.filter(id = 7)'
В дебагере собственно так и выглядит, но при обращении к переменной “subbasic” выдается ошибка “name ‘subbasic’ is not defined”.
Офлайн
0
а на какой строке ошибка?
>>> exec('subbasic=' + str({})) >>> subbasic {} >>> subbasic[1]=0; subbasic['s']='h' >>> for i in subbasic: ... print(i) ... 1 s >>>
Офлайн
294
Bubalgumда вобщем все должно работать, проверте везда правильность написания переменной, может где кирилица затесалась?
В дебагере собственно так и выглядит, но при обращении к переменной “subbasic” выдается ошибка “name ‘subbasic’ is not defined”.
'subbasic' == 'subbasiс' # во второй строке буква "с"- русская >>> False >>>
[code python][/code]
Отредактировано PEHDOM (Дек. 6, 2018 10:46:35)
Офлайн
0
Проверил в интерпретаторе python код работает. А вот проекте django, не хочет.
Но получилось обратиться к переменной следующим образом: "
locals()['subbasic']
Отредактировано Bubalgum (Дек. 6, 2018 11:02:37)
Офлайн