Есть ли у вас представление о ожидаемом выходе? Напр. это будет?
>>> f = FileItem("/foo/bar")
>>> magic(f)
'{"fname": "/foo/bar"}'
В этом случае вы можете просто называть json.dumps(f.__dict__)
.
Если вам нужен более индивидуальный вывод, вам придется подклассы JSONEncoder
и реализовать свою собственную сериализацию.
Для тривиального примера см. ниже.
>>> from json import JSONEncoder
>>> class MyEncoder(JSONEncoder):
def default(self, o):
return o.__dict__
>>> MyEncoder().encode(f)
'{"fname": "/foo/bar"}'
Затем вы передаете этот класс в метод json.dumps()
как cls
kwarg:
json.dumps(cls=MyEncoder)
Если вы также хотите декодировать, вам нужно будет поставить пользовательский object_hook
в класс JSONDecoder
. Например,
>>> def from_json(json_object):
if 'fname' in json_object:
return FileItem(json_object['fname'])
>>> f = JSONDecoder(object_hook = from_json).decode('{"fname": "/foo/bar"}')
>>> f
<__main__.FileItem object at 0x9337fac>
>>>
IMO, это - самый чистый ответ:
<form action="" method="get">
Name: <input type="text" name="name"/><br/>
Pwd: <input type="password" name="password"/><br/>
<div class="yourCustomDiv"/>
<input type="submit" style="display:none"/>
</form>
Еще лучше при использовании JavaScript для представления формы с помощью пользовательского отделения, необходимо также использовать JavaScript, чтобы создать его и установить стиль display:none на кнопке. Таким образом, пользователи с отключенным JavaScript будут все еще видеть кнопку отправки и могут нажать на него.
<час>было отмечено, что display:none заставит IE игнорировать вход. Я создал новый пример JSFiddle , который запускается как стандартная форма и использует прогрессивное улучшение, чтобы скрыть отправление и создать новое отделение. Я действительно использовал моделирование CSS от StriplingWarrior.
Я думаю, что у Вас должны на самом деле быть кнопка отправки или отправлять изображение... У Вас есть определенная причина использования, "отправляют отделение"? Если Вы просто хотите пользовательские стили, я рекомендую <input type="image"...
. http://webdesign.about.com/cs/forms/a/aaformsubmit_2.htm
При использовании asp.net, можно использовать атрибут defaultButton на форме.
Почему Вы только не подаете заявку, отделение отправляют стили кнопке отправки? Я уверен, что существует JavaScript для этого, но это было бы легче.
Используйте следующий сценарий.
<SCRIPT TYPE="text/javascript">
<!--
function submitenter(myfield,e)
{
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;
if (keycode == 13)
{
myfield.form.submit();
return false;
}
else
return true;
}
//-->
</SCRIPT>
Для каждого поля, которое должно отправить форму, когда пользователь совершает нападки, вводят, вызывают submitenter функцию следующим образом.
<FORM ACTION="../cgi-bin/formaction.pl">
name: <INPUT NAME=realname SIZE=15><BR>
password: <INPUT NAME=password TYPE=PASSWORD SIZE=10
onKeyPress="return submitenter(this,event)"><BR>
<INPUT TYPE=SUBMIT VALUE="Submit">
</FORM>
Вот то, как я делаю это с jQuery
j(".textBoxClass").keypress(function(e)
{
// if the key pressed is the enter key
if (e.which == 13)
{
// do work
}
});
, Другой JavaScript не слишком отличался бы. выгода проверяет на аргумент нажатия клавиши "13", который является клавишей Enter
Для представления формы, когда клавиша Enter нажимается, создают функцию JavaScript вдоль этих строк.
function checkSubmit(e) {
if(e && e.keyCode == 13) {
document.forms[0].submit();
}
}
Тогда добавляют событие к любому объему, в котором Вы нуждаетесь, например, на теге Div:
<div onKeyPress="return checkSubmit(event)"/>
Это - также поведение по умолчанию Internet Explorer 7 так или иначе хотя (вероятно, более ранние версии также).