I have a question about the cgi module. 

I'm trying to retrieve post data as a nested dictionary from client
code. 

For instance:



"""client code"""
from requests import sessions
from datetime import datetime

session = sessions.Session()
date = str(datetime.now())
msg_id = 0001
message = {"metadata": {"date": date, "id": msg_id}}
session.post(data=message)



"""server cgi script"""
import cgi

form = cgi.FieldStorage()
metadata = form["metadata"]
print(metadata)
>>> ["date", "id"]

for item in form.list:
    print(f"{item}\n{item.name}\n{item.value}\n")

>>> MiniFieldStorage('metadata', 'date')
>>> metadata 
>>> date
>>> 
>>> MiniFieldStorage('metadata', 'id')
>>> metadata
>>> id
>>> 


My issue is the FieldStorage class doesn't seem to store the values
within metadata, it only stores the key of each element within the
nested dictionary. And it constructs MiniFieldStorage objects with
attributes such as .name == "metadata" and .value == "date". 

But I need the actual values, not just the name of the element. Any idea
how I can maintain this nested structure and retrieve the data within a
nested dictionary in an elegant way?

Constraints: 
For simplicity, I omitted the actual payload which is also a nested
dictionary that goes two levels deep. I'm searching for a solution
that's extensible enough to include such fields as well.
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to