Вопрос

Я пытаюсь сделать Интернет только с помощью CouchDB и CouchApp ...
Но по какой -то причине мне нужен внешний процесс с помощью Python ..
А теперь я застрял, как обрабатывать переменную пост в Python ...

Я читаю это(и это работает) и это...

Но я хочу это так:

>>> a = {"success":1,"data":{"var1":1,"var2":2,"var3":3}}
>>> a["data"]["var2"]
2
>>> var2

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    var2
NameError: name 'var2' is not defined
>>> for key, value in a["data"].items():
    print  (key, value)
('var1', 1)
('var3', 3)
('var2', 2)
>>> var1

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    var1
NameError: name 'var1' is not defined
>>> 

Я хочу, когда я набираю var2, он возвращает 2
другим словом, как заставить вложенного дочернего объекта стать переменной, когда я не знаю, сколько len Данные .. это потому, что на внешнем питоне, как обрабатывать переменную после этого req["form"]["var1"]

Это было полезно?

Решение

Вы должны попытаться обновить свой локальный (не рекомендуемый) или глобальный Dictionnary с помощью Data Dicknary

>>> a = {"success":1,"data":{"var1":1,"var2":2,"var3":3}}
>>> a["data"]["var2"]
2
>>> locals().update(a["data"])
>>> var2
2

или же

>>> globals().update(a["data"])
>>> var2
2

Чтобы сделать это безопасным способом, вы должны доверять источнику данных, с которыми вы обновляете свой словар Globals, чтобы избежать замены Custrin или других забавных инъекций кода.

Другие советы

Может использовать оператор Python «EXEC» для создания строки, а затем динамически выполнить ее.

a = {"success":1,"data":{"var1":1,"var2":2,"var3":3}}

for key, value in a["data"].items():
    exec('%s=%s' % (key, value, ))

print 'var1:', var1
print 'var2:', var2
print 'var3:', var3

Чтобы сделать это безопасно, я бы предложил что -то вроде:

allowed_variables = ('var1', 'var2', 'var3')

for k,v in a["data"].iteritems():
    if k in allowed_variables:
        locals.update({k:v})
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top