Я новичок. Я хотел бы знать, как обрабатывать массивы на основе массива в CGI?
<form name="frmLogin" method="get" action="">
Username: <input type="text" name="login[username]" /><br/>
Password: <input type="password" name="login[password]" /><br/>
<input type="submit" name="login[submit]" />
</form>
У меня есть такая форма, как выше. Как я могу получить поле входа в качестве словаря, где ключи будут именем пользователя, паролем, отправляют с соответствующими значениями.
я могу получить отдельно это => form ["login [username]"]. значение, но что, если я не знаю ключ, т.е. флажок [] Нужно ли обрабатывать сообщения и манипулировать с помощью ручного кодирования или есть какой-либо другой способ сделать это?
в php $ _GET ['login'] даст мне массив определенной пары значений ключа, мне нужно что-то подобное.
Благодарю.
Я не думаю, что cgi.FieldStorage
имеет аналогичный метод, как тот, который вы описываете в php. Однако вы можете написать что-то подобное, чтобы выполнить одно и то же, учитывая имя [attr], которое у вас есть на именах полей:
def get(form, prefix):
output = {}
def parse(key):
name = key.split('[')[1].rstrip(']')
output[name] = form[key]
map(parse, [key for key in form.keys() if key.startswith(prefix)]
return output
Итак, ваш в cgi выглядел примерно так:
form = cgi.FieldStorage()
login_info = get(form, 'login')
print login_info['username']
print login_info['password']
login[xxx]
вlogin[xxx]
я не вижу разницы между предлагаемойform["login"]["username"]
и доступнойform["login[username]"]
или, что лучше,form["login_username"]
.