update submissions realpython por form enviar con and ajax django model-view-controller json cappuccino

submissions - Cappuccino, Django, AJAX, y encajando todo: ¡revisa mi arquitectura!



https realpython com django and ajax form submissions (1)

Para un sitio de poco tráfico, usar la capa de enrutamiento de Django estaría bien, pero si planeas obtener una cantidad significativa de tráfico, podrías considerar que tu servidor de proxy web maneje los talones.

En cuanto al resto, funciona y la comunidad de TurboGears lo ha estado haciendo durante años (yo era un committer de TG, así que eso es lo que normalmente uso). La arquitectura TG de devolver un diccionario a una plantilla hace que esto sea trivial, ya que acaba de establecer ''json'' como su motor de plantilla.

Hacer lo mismo en Django no es mucho más complicado. Solo use las herramientas de serialización para escribir el resultado en la respuesta en lugar de usar las llamadas de creación de plantillas.

Tenga en cuenta que cuando hace una arquitectura como esta, es mucho más fácil de administrar si mantiene toda la lógica de la aplicación en un solo lugar. Poner un poco de lógica de aplicación en Django y algo en el navegador hace que las cosas comiencen a complicarse bastante rápido. Si trata su servidor como una capa de persistencia tonta (con la excepción de la validación / autenticación / autorización), la vida es más fácil.

FWIW, creo que es más fácil trabajar con Sproutcore que con Cappuccino si le interesan los marcos de mejora no progresivos más pesados.

Estoy tratando de entender a Cappuccino. Me gustaría que mis colegas de StackOverview revisen la arquitectura a continuación y vean si tiene sentido, el objetivo es utilizar los beneficios únicos de Django y Cappuccino sin duplicar el lugar donde las tecnologías se superponen ...

Cuando el navegador web solicita una URL ''amigable'' (por ejemplo, /, / artículos, etc.):

  • El urls.py de DJango lo compara con una vista.
  • La vista, en lugar de hacer el típico trabajo de DJangos de llenar una plantilla con el dict local,
    devuelve el pequeño código ''stub'' utilizado en una aplicación Cappuccino directamente.
  • El cliente recibe el HTML Cappuccino
  • El cliente solicita las URL de Objective J JS mencionadas en el código auxiliar HTML
  • La aplicación para el usuario final se ejecuta y se muestra en el navegador

El navegador ahora tiene una aplicación en funcionamiento. Cuando el usuario hace algo que solicita algo del servidor:

  • El navegador envía una solicitud XMLHTTP a una URL.
  • La URLs.py de Django lo compara con una vista.
  • La vista funciona, tal vez interactuando con el modelo DB. Pero en lugar de devolver una plantilla, Django devuelve algo de JSON.
  • El cliente recibe el JSON y hace lo que tiene que hacer.

¿Esto tiene sentido? Todavía tenemos el beneficio de las URL amigables y la base de datos que se está creando para que podamos modelar nuestro código. Sin embargo, en lugar de utilizar plantillas, proporcionamos páginas de código auxiliar de Cappuccino y respuestas JSON, para ofrecer a los usuarios algo más parecido a una aplicación real y menos a un motor de plantillas HTML.

¿Hay quizás una mejor manera de hacer las cosas? ¿Qué usan otros Pythonistas? Gracias por sus comentarios.