Del modelo de datos a XML y UTF-8
¿Cómo hace MüchiGame para pasar el modelo de datos (con lógica de programación o no del juego) a un fichero XML?
Necesitamos utilizar métodos inteligentes para recuperar los datos desde Django, para ello utilizaremos JSON, serializándolos por medio del conjunto de utilidades disponible:
_____________
>>> from django.utils import simplejson
>>> datos = {’nombre’: ‘juax’}
>>> simplejson.dumps(datos)
‘{”nombre”: “juax”}’
>>> datos = [{’nombre’: ‘juax’}, {’nombre’:'eva’}, {’nombre’: ‘nieves’}]
‘[{”nombre”: “juax”}, {”nombre”: “eva”}, {”nombre”:”nieves”}]’
_____________
EJEMPLO UTILIZANDO UNA VISTA:
_____________
from django.utils import simplejson
def json_jugador(request, idjugador):
jugador = Jugador.objects.filter(id=idjugador)
json = simplejson.dumps(jugador)
return HttpResponse(json,mimetype=’application/json’)
_____________
Ahora debemos serializar el resultado, debemos definir la URL (muchigame/juego/urls.py) que llamará a la vista del framework de JSON en Django:
URL:
_____________
(’^json/jugador/(
_____________
VISTA:
_____________
from django.core.serializers import serialize
def json_jugador(request, idjugador):
jugador = Jugador.objects.filter(id=idjugador)
json = serialize(’json’, jugador)
return HttpResponse(json,mimetype=’application/json’)
y quedaría así:
_____________
[{
“pk”: “1”,
“model”: “muchigame.juego.Jugador”,
“fields”: {
“nombre”: “Juax”,
“f_alta”: “20061105”,
“etc”: “etc”}
}]
_____________
Con ésta pequeña introducción habremos comprendido el funcionamiento del framework para usar AJAX y recibir respuestas rápidas. Veamos como se produce ahora la traducción a XML de los datos…
Igual que antes, primero definimos la URL que usaremos para obtener la información (muchigame/juego/urls.py):
_____________
(’^xml/jugador/(
_____________
Evidentemente ahora vamos a declarar la vista como antes:
_____________
from django.core.serializers import serialize #carga la libreria para serializar
def xml_jugador(request, idjugador):
jugador = Jugador.objects.filter(id=idjugador)
#id lo pone por defecto django en la tabla
xml = serialize(’xml’, jugador)
return HttpResponse(xml,mimetype=’application/xml’)
_____________
El resultado obtenido en XML es el siguiente:
_____________
_____________
Si queremos ser aún más elegantes podemos utilizar las vistas genéricas pero éstas no siempre nos ofrecen todo lo que necesitamos:
_____________
from django.views.generic import list_detail
# …
(’^/listar_jugadores/$’, list_detail.object_list,{’queryset’: Jugador.objects.all()})
_____________
* Hasta que no arregle el segundo problemilla de mi host dedicado (que para algo lo pago) no podré utilizar en él Django con Apache, así que me veo obligado a usar datos generados para el simulador del juego en DHTML…
Para que el sistema al completo acepte cualquier lenguaje se utiliza la codificación UTF-8 en todos sitios, me explico:
- Base de datos con MySQL en UTF-8 ( ver GranadaPHP para conseguir una clase en PHP con el “soporte activado”).
- Utilizar ficheros, a ser posible,codificados y almacenados en UTF-8 (en los editores) para no llevarse sorpresas en diferentes combinaciones de sistemas operativos / lenguajes…
- Usar el parámetro de configuración de Apache
:"AddDefaultCharset UTF-8"en el fichero .htaccess del directorio web principal.
- Correos en HTML ( ver la clase de correo en PHP disponible en GranadaPHP )
- Por último pero no menos importante, hacer que los ficheros HTML,XML,etc. estén en dicha codificación con las etiquetas correspondientes,
HTML con : <meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8″ />
y XML con :
Así dispondremos de acentos y carácteres especiales tanto en español como en cualquier otro lenguaje…
8 de April de 2007 - Posted in Noticias, Ingeniería |

Aún no hay comentarios. Sé el primero.
Deja una respuesta
Debes de haber ingresado para comentar.