2010-02-16 23 views
22

Estoy empezando Python y me preguntaba cómo haría para programar aplicaciones web sin la necesidad de un framework. Soy un desarrollador PHP de experiancia pero tengo ganas de probar Python y normalmente me gusta escribir desde cero sin la restricción de un framework.¿Programar aplicaciones web en python sin un marco?

+4

"restricción de un marco".¿Por qué dices que un marco es una restricción? PHP es un marco enorme y sofisticado para evitar escribir un código tedioso. ¿Por qué renunciar a ese nivel de poder? ¿Qué hay de malo en frameworks que PHP está bien pero otro framework que no es PHP no está bien? –

+9

PHP no es realmente un framework, es un lenguaje interpretado, pero no un framework. Para mí, la mayoría de las veces un marco es una restricción porque tengo que hacer lo que el marco me dice que tengo que hacer. Por ejemplo, en CakePHP debes nombrar los controladores, las vistas y los modelos con un nombre específico, no tienes que hacerlo, pero si no lo haces, entonces las cosas no se unen "mágicamente", entonces, ¿qué sentido tiene? usando el marco? Y los marcos están llenos de características que no necesito que sean más lentos. Prefiero escribir mis propias cosas (guardo una biblioteca de todo mi código), soy un fenómeno como ese: D –

+1

@Dr Hydralisk: PHP puede ser independiente. Sin embargo, cuando está integrado en Apache, definitivamente es un marco. Intente escribir su propia versión de mod_php "desde cero" y vea todas las cosas que PHP está haciendo por usted automágicamente. El objetivo de usar un marco es que te libera de los detalles. PHP te libera de numerosos detalles de procesamiento HTTP. Muchos frameworks de Python te liberan de los detalles. Los marcos están "llenos de características"? De Verdad? ¿Puede actualizar su pregunta para identificar específicamente las características que no le gustan? –

Respuesta

23

WSGI es el estándar de Python para las interfaces de servidor web. Si desea crear su propio marco de referencia u operar sin un marco de trabajo, debería analizarlo. Específicamente, he encontrado Ian Bicking's DIY Framework artículo útil.

Como acotación al margen, tiendo a pensar que los marcos son útiles y personalmente uso de Django, como la forma Pilones funciona, y lo han utilizado Bottle en el pasado para la creación de prototipos — es posible que desee ver en la botella si quieres una estancia de salida de microframework de su camino.

+5

Gracias, lo investigaré. La gente responde muy rápido aquí, me encanta este lugar: D –

2

Tendrá que buscar algo como CGI o FastCGI, que proporciona una API para comunicarse con el servidor web.

Google App Engine le permite escribir aplicaciones simples, e incluso proporciona un servidor web local donde puede probar cosas.

+0

Creo que App Engine es una gran sugerencia. El marco de '' webapp' es bastante minimalista, y es casi tan fácil de poner en marcha como viejo PHP simple en el alojamiento de productos básicos. –

+0

Estaba buscando en App Engine, se ve interesante. –

3

Uno de los frameworks más livianos es mod_wsgi. Cualquier cosa menos va a ser una gran cantidad de trabajo analizar las solicitudes HTTP para encontrar encabezados y URI y métodos y analizar la consulta GET o POST/asociación de datos, manejar cargas de archivos, cookies, etc.

Como está, mod_wsgi se solo maneja los aspectos básicos del análisis de solicitud y el encuadre de resultados.

Sesiones, cookies, utilizando un generador de plantillas para sus páginas de respuesta será una cantidad sorprendente de trabajo.

Una vez que haya comenzado por ese camino, puede encontrar que un poco de soporte de marco ayuda mucho.

+0

Me gusta un desafío: D –

+0

Hmmm, mod_wsgi no es técnicamente un framework, es un adaptador WSGI. Ni siquiera maneja el análisis de solicitud HTTP, ya que Apache hace todo eso por él. –

+2

@Graham Dumpleton: ¿"técnicamente un marco"? ¿Cuál es la definición técnica? –

0

Para un programador de PHP, creo que mod_python es una buena manera de comenzar sin ningún marco. Se puede usar directamente como módulo Apache 2. Puede tener etiquetas de código (como <? ?> en PHP) e incluso la salida HTML (HTML condicional dentro if):

<% 
if x == y: 
    # begin 
%> 

    ... some html ... 

<% 
# end 
%> 

(ejemplo simplificado tomado de onlamp.com 's Python Server Pages tutorial)

+0

Se ve bien, pero también soy antipacha ... ¿Hay algo para Nginx? –

+0

Parece haber un módulo wsgi para nginx: http://wiki.nginx.org/NginxNgxWSGIModule – AndiDog

1

usted debe Prueba web.py, proporciona un mínimo de características que no se interponen en tu camino.

http://webpy.org/

-2

La respuesta es "no". El uso de un marco hace que su código sea más fácil de mantener, escalable, legible, comprobable y modular.

+0

Como dije antes, me encanta escribir mis propias cosas, y cuando las escribo, me aseguro de seguir todas esas cosas, soy un poco perfeccionista en lo que respecta a la programación (un monstruo de optimización seria, es un dolor). Y conservo una biblioteca para la mayor parte de mi código, así que cuando necesito hacer algo, simplemente los guardo y obtuve un mini marco personal que tiene solo las características que necesito, pero que aún puedo agregar más adelante si es necesario. –

+1

La solución adecuada NIH (si existe tal cosa) sería * escribir un marco *, no para evitar un marco. Ser capaz de introducir abstracciones razonables (es decir, utilizando un marco) hace factible la escritura de grandes aplicaciones. No sé lo que significa ser "un fanático de la optimización seria, es un dolor", pero no suena como alguien que alguna vez quisiera contratar: el tiempo dedicado a optimizar el código a menudo no es económico ni se desperdicia. La claridad, el tiempo del programador, la capacidad de mantenimiento y la capacidad de prueba suelen valer la pena para optimizar la velocidad y el espacio. –

1

La gente aquí ama los marcos. Una deficiencia que he notado es que Python carece de un módulo útil para Sessions como biblioteca incorporada, a pesar de que está disponible en PHP y como CGI :: Session en Perl.

Usted va a terminar haciendo:

import cgi # if you want to work with forms and such 
import cgitb; cgitb.enable() # to barf up errors to the web 
print 'Content-type: text/html\n\n' # to start off any HTML. 

Tendrá que escribir cosas sesión en su cuenta.

+0

Creo que no voy a usar Python para el desarrollo web, solo lo usaré como un lenguaje de programación de propósito general. Voy a volver a PHP y tal vez darle otra oportunidad a Rails (ya sé que es un framework ... es el único que realmente me gustó, es solo que la sintaxis de Ruby es tan molesta). –

Cuestiones relacionadas