Сериализация данных перед отправкой серверу
Как оказывается, точка расширения serialize может оказаться особенно полезной при организации обмена данными с серверным компонентом, который ожидает получить дату, отформатированную определенным образом. Так, в примере 13.5 приводится программный код, расширяющий диджит DateTextBox и обеспечивающий возможность форматирования при вызове метода toString. В этом примере демонстрируется, как организовать отправку значения диджита DateTextBox в формате, отличном от того, что используется для отображения на экране.
Пример 13.5. Сериализация значения DateTextBox перед отправкой серверу
<html>
<head>
<title>Custom DateTextBox</title>
<link rel="stylesheet" type="text/css"
href="http://o.aolcdn.com/dojo/1.1/dojo/resources/dojo.css" />
<link rel="stylesheet" type="text/css"
href="http://o.aolcdn.com/dojo/1.1/dijit/themes/tundra/tundra.css" />
<script
djConfig="parseOnLoad:false",
type="text/javascript"
src="http://o.aolcdn.com/dojo/1.1/dojo/dojo.xd.js">
</script>
<script type="text/javascript">
dojo.require("dojo.parser");
dojo.require("dijit.form.DateTextBox");
dojo.addOnLoad(function() {
dojo.declare("dtdg.CustomDateTextBox",
[dijit.form.DateTextBox], {
serialize: function(d, options) {
return dojo.date.locale.format(d,
{
selector:'date',
datePattern:'dd-MMM-yyyy'}).toUpperCase();
}
});
dojo.parser.parse(dojo.body());
});
</script>
</head>
(body class="tundra")
<form action="http://localhost:8080" type="POST">
<input dojoType="dtdg.CustomDateTextBox" name="customDate"/>
<input type="submit" value="Submit"/>
</form>
(/body)
</html>
Ниже приводится минимальный класс CherryPy, способный принимать и отображать эту форму:
import cherrypy
class Content:
@cherrypy.expose
def index(self, **kwargs):
return str(kwargs)
cherrypy.quickstart(Content())
Комментарии:
Нету комментариев для вывода...