2011-09-01 11 views
11

Supongamos que tiene un sitio de Django con una base de datos existente. Algo simple, como el modelo individual que contiene un récord para cada equipo de béisbol de ligas menores. Se accede al modelo por una vista que enumera todos los equipos, y otra que acepta una babosa y luego crea una página de detalles sobre ese equipo.¿Hay alguna buena opción para preparar un sitio de Django como archivos estáticos?

¿Existe una buena opción para convertir la aplicación en una pila de archivos planos al horno, para que pueda ser servida desde un servicio de archivos estáticos como el S3 de Amazon?

He jugué con Hyde pero no es claro para mí cómo se aplica a un sitio existente respaldado por una base de datos.

Cualquier consejo sería muy apreciado. Gracias de antemano.

Respuesta

0

Está solicitando un sitio dinámico para alojar en un entorno estático, eso es imposible. La única forma es exportar todos los archivos, ponerlos en un servidor estático. Puede hacerlo con wget, copiará todos los archivos y los convertirá a html.

Una de las desventajas de este problema es que solo puede crear archivos html, si hay enlaces a las páginas, es decir. los formularios de búsqueda etc. no funcionarán, el enlace basado en Javascript no puede trabajo.

+0

Gracias. Te escucho totalmente en el dinámico v. Problema estático. En mi ilusión fantástica, hay un paquete de Python ingenioso que recorrerá su base de datos y elaborará las páginas una a una, como wget de adentro hacia afuera. Aunque probablemente estoy bromeando y solo tengo que morder la bala y molerlo con estilo. – palewire

+0

En entornos estáticos, no puede * ejecutar * ninguna aplicación. Pero mientras no actualice con bastante regularidad, 'wget' manejará bien las cosas, y si actualiza, necesita conectarse a su servidor dinámico (que es local, supongo) y luego actualizar los archivos. –

1

Tengo una configuración similar usando Django pero en GAE. He creado un script de construcción que utilizo para construir mis archivos HTML estáticos. Como la versión de GAE de las plantillas de Django es ligeramente diferente, es posible que necesite algunas pruebas.

Pero esencialmente haces algo como

from django.template import Template, Context 
from django.template.loader import get_template 

t = get_template('template1.html') #Need to verify this. GAE template allows me to just call template.render(path, context). Not sure about pure Django templates 
c = Context({ 'variable' : 'value'}) 
with open("file1.html", "w") as f: 
    f.write(t.render(c)) #This works for me, but if this doesn't in pure Django, try render_to_string 

HTH

+0

Gracias por la propina. ¿Y cómo se despliega? ¿Escribes un poco de código que recorre la base de datos y ejecutas el código de arriba en cada entrada, y luego presionas el resultado? – palewire

+0

Sí, mi script de compilación básicamente toma el contenido de algunos archivos, los combina en las plantillas y crea el HTML estático. No lo configuré para presionar automáticamente, ya que no cambio el contenido allí muy a menudo, pero eso debería ser bastante fácil de hacer. – arunkumar

+0

Está bien, ese tipo de script de compilación "personalizado" es algo de lo que siempre he pensado que tendría que terminar, pero es genial aquí el punto de vista de los demás. Y siempre hay una parte de mí que piensa que si solo le pido a Internet, algún malvado maestro de Python podría tener una solución automática esperando. – palewire

2

entiendo su intención, pero cualquier marco decente en estos días ofrece algún tipo de caching mecanism que alivian los dolores de contenido dinámico. Con una memoria caché correctamente implementada, la diferencia entre estático y dinámico será trivial. Créeme.

Happy coding, friend.

+2

Gracias. Estoy totalmente de acuerdo en que el almacenamiento en caché es el Camino de la Iluminación Onefold cuando se trata de implementar aplicaciones basadas en bases de datos. En mi caso actual de uso, sin embargo, en realidad estoy pensando más en el costo que en la carga. Es más barato enviar archivos planos, y me gustaría intentar aprovechar eso. – palewire

0

No estoy familiarizado con nada que convierta un sitio django existente a un sitio html estático. Puede valer la pena mirar el conjunto de nuevos proveedores de PaaS django/python. Un sitio como este debería ser fácil de ejecutar en una de estas plataformas y debería ser bastante barato mes a mes.

Algunos proveedores es posible que desee a la comprobación incluyen:

+0

Gracias por los consejos. De hecho, estoy considerando archivos estáticos como alternativa a los sitios de PaaS. Principalmente uso Google App Engine, pero estoy buscando reducir los costos antes de su próximo cambio a un calendario de precios mucho más costoso. – palewire

2

Una nueva acaba de ser anunciado, a pesar de que ha existido y se ha utilizado por su autor desde hace bastante tiempo:

django-medusa.

No he intentado usarlo todavía, pero seguro que se ve bien: ¡Lo estaré!

Cuestiones relacionadas