7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Python

Python desde Cero: Crea un Sitio Web Dinámico

Scroll to top
Read Time: 16 mins
This post is part of a series called Python from Scratch.
Python from Scratch: Object Oriented Programming

Spanish (Español) translation by Leareny Guerrero (you can also view the original English article)

207/5000 Hemos cubierto bastante de Python en los tutoriales previos de esta sesión. Hoy vamos a combinar todo lo que hemos aprendido hasta ahora para construir un sitio web dinámico con Python.


¿Prefiere un video tutorial?

Entonces, ¿cómo empiezas a crear sitios web con Python? Bueno, podría hacerlo todo usted mismo, y escribir un programa que se ejecuta en un servidor web, aceptando solicitudes de página y publicando respuestas en forma de HTML y otros recursos. Sin embargo, eso es mucho trabajo, entonces ¿por qué tomarse tantas molestias cuando hay muchas herramientas existentes para hacer el trabajo por usted? Estas herramientas se llaman frameworks, y son lo que usaremos hoy para crear nuestro sitio web.

Frameworks (Entorno de Trabajo) Phyton

Existen bastantes frameworks web de Python, pero estos son algunos de los mejores:

  •  Django - Vamos a usar esto hoy. Tiene un gran conjunto de características, pero sigue siendo simple de usar. La documentación también es excelente, así que si te quedas atascado, tendrás el tiempo más fácil para resolver tu problema con Django.
  • Grok - Otro framework con un conjunto de características que se acerca a Django. Si decides que no prefieres a Django, esta es una buena alternativa.
  • WebPy - Un framework mucho más ligero. No tiene tantas funciones, ¡aunque accionó a Reddit por un período de tiempo!
  • TurboGears - aunque anteriormente tenía una reputación de documentación deficiente, TurboGears ha mejorado sustancialmente en el último año.

Puede encontrar una lista más completa en el sitio web de Python si necesita opciones adicionales. Hoy vamos a configurar Django para el desarrollo en una máquina local, y luego construiremos un blog simple. También vamos a revisar el proceso de instalación en un servidor web remoto.


Instalando Django

Hoy realizaremos la mayor parte de nuestro trabajo en la Terminal. Esto debería funcionar en Mac y Linux; sin embargo, si está ejecutando Windows, el proceso es algo diferente. Sin embargo, no es necesario familiarizarse con la línea de comandos si solo está escribiendo Python, si está planeando usar Django o está ejecutando un sitio web dinámico en general, vale la pena aprenderlo.

Tutoriales de Terminal

Considere la posibilidad de revisar estos tutoriales para comenzar a trabajar con la Terminal.

Estos son los comandos que necesita para instalar Django. No es compatible con Python 3, por lo que deberá instalar la versión 2.7 o anterior para que se ejecute.

A continuación, podemos eliminar opcionalmente los archivos de instalación.

¡Deberias hacer eso! Probémoslo

Debería ver '1.3.1'. Si lo hace, todo funcionó y Django está instalado en su sistema. ¡Felicitaciones! ¡Estamos listos para comenzar a crear nuestro sitio!


Construyendo nuestro Blog

Vamos a construir un sistema de blog hoy, porque es una excelente manera de aprender los conceptos básicos. Primero, necesitamos crear un proyecto de Django.

¿Qué hacen cada uno de estos archivos?

  •  __init__.py le dice a Python que esta carpeta es un paquete de Python. Aprendimos sobre esto en la tercera lección; permite a Python importar todas las secuencias de comandos en la carpeta como módulos.
  • manage.py no es realmente parte de su sitio web; es un script de utilidad que ejecuta desde la línea de comando. Contiene un arreglo de funciones para administrar su sitio.
  • settings.py contiene la configuración de su sitio web. Django no usa archivos XML para la configuración; todo es Python. Este archivo es simplemente una cantidad de variables que definen la configuración de su sitio.
  • urls.py es el archivo que asigna las URL a las páginas. Por ejemplo, podría mapear yourwebsite.com/about a una página Acerca de nosotros.

Django se refiere a sí mismo un marco de MTV, que significa Modelo Vista de plantilla.

Aplicaciones

Sin embargo, ninguno de estos archivos crea un sitio web funcional. Para eso, necesitamos aplicaciones. Las aplicaciones son donde se escribe el código que hace que el sitio web funcione, pero antes de echarles un vistazo, debemos comprender un poco los principios de diseño de Django.

Primero, Django es un framework MVC, que significa Modelo Vista Controlador. Django se refiere a sí mismo un framawork de MTV, que significa Modelo Plantilla Vista. Es un enfoque ligeramente diferente que MVC, pero fundamentalmente, son bastante similares. De todos modos, MVC es un patrón arquitectónico que proporciona un método para estructurar sus proyectos. Separa el código que se utiliza para procesar los datos del código que administra la interfaz de usuario.

Django se suscribe a la filosofía DRY, o "Do not Repeat Yourself".

En segundo lugar, Django se suscribe a la filosofía DRY, o Do not Repeat Yourself, lo que significa que nunca se debe escribir código que realice una determinada tarea más de una vez. Por ejemplo, en nuestro blog, si escribimos una función que eligió un artículo al azar del archivo e implementamos esta función en varias páginas, no volveríamos a codificarla cada vez que fuera necesario. Lo codificamos una vez y luego lo usamos en cada página.

Entonces, ¿cómo se relaciona esto con las aplicaciones? Bueno, las aplicaciones te permiten escribir tu sitio web en un estilo DRY. Cada proyecto, como el que tenemos aquí, puede contener múltiples aplicaciones. Por el contrario, cada aplicación puede ser parte de múltiples proyectos. Usando el ejemplo de antes, esto significa que si creamos otro sitio en el futuro que también necesitara una función de página aleatoria, no tendríamos que volver a escribirlo. Podríamos simplemente importar la aplicación de este proyecto. Debido a esto, es importante que cada aplicación tenga un propósito distinto. Si escribe toda la funcionalidad de su sitio dentro de una aplicación, y luego necesita usar parte de ella nuevamente más adelante, debe importarlo todo. Si estuvieras creando un sitio web de comercio electrónico, por ejemplo, no querrías importar todas las características del blog. Sin embargo, si crea una aplicación para la función aleatoria y una aplicación para el sistema de publicación de blogs, puede elegir los bits que necesite.

Esto también significa que dentro del sitio, el código está bien organizado. Si desea modificar una característica, no tiene que buscar en un archivo masivo; en su lugar puede navegar a la aplicación correspondiente y cambiarla sin preocuparse de interferir con nada más.

De nuevo, tenemos un archivo__init__.py para convertirlo en un paquete y otros tres archivos: modelos, pruebas y vistas. No necesitamos preocuparnos por las pruebas por ahora, pero las otras dos son importantes. Modelos y Vistas son las partes M y V de MVC.

En los modelos, definimos nuestras estructuras de datos.

Sí alguna vez trabajó con PHP anteriormente, puede haber usado PhpMyAdmin para crear sus tablas MySQL, y luego haber escrito sus consultas SQL manualmente en sus scripts PHP. En Django, es mucho más fácil. Definimos todas las estructuras de datos que necesitamos en este archivo de modelos, luego ejecutamos un comando y todas las bases de datos necesarias se crean para nosotros.

Cuando desee acceder a esos datos, vaya a través de estos modelos llamando al método en ellos, en lugar de ejecutar consultas sin formato. Esto es muy útil, porque Django puede usar varios programas de base de datos. Vamos a utilizar MySQL hoy, porque es el más poderoso, y es lo que ofrecen la mayoría de los hosts, pero si necesitáramos cambiar a una base de datos diferente en el futuro, ¡todo el código seguirá siendo válido! En otros lenguajes, si quisiera cambiar a SQLite o algo similar, necesitaría reescribir el código que accede a su base de datos.

En el archivo de vistas, escribimos el código que realmente genera las páginas web. Esto une todas las otras partes juntandolas. Cuando un usuario escribe una URL, se envía mediante el script urls que vimos anteriormente al script de vistas, que luego obtiene datos relevantes de los modelos, los procesa y los pasa a una plantilla, que finalmente se sirve como la página el usuario ve. Echaremos un vistazo a esas plantillas en breve. Son la parte más fácil, principalmente HTML.

Para un blog, necesitaremos una tabla de publicaciones, con varios campos para el título, el texto del cuerpo, el autor, la hora en que se escribió, etc. Un blog real tendría comentarios, pero eso está más allá del alcance de la demostración de hoy.

MySQL

Estos modelos son solo una descripción. Necesitamos hacer una base de datos real de ellos. Primero, sin embargo, necesitamos que MySQL se ejecute en nuestro sistema. En un servidor web real, esto no sería un problema, ya que generalmente lo tienen preinstalado. Afortunadamente, con un administrador de paquetes, es fácil de instalar. Primero, necesitas instalar Homebrew e Instalación Fácil

Cuando reinicie, MySQL no se ejecutará, por lo que cada vez que necesite hacer esto en el futuro, ejecute mysqld para iniciar el servidor. A continuación, puede ejecutar python2.6 manange.py runserver en una nueva pestaña para iniciar el servidor de desarrollo.

Este comando todavía no ejecutará el servidor, solo devolverá un error. Eso es porque tenemos que ajustar nuestras configuraciones. Echemos un vistazo asettings.py

Primero debe cambiar la configuración de la base de datos. Estos comienzan en la línea doce.

Si intenta ejecutar el servidor nuevamente, debería funcionar, siempre que haya instalado MySQL correctamente. Si visita 127.0.0.1:8000 en su navegador web, debería ver la página predeterminada de Django.

Ahora convirtamos nuestro sitio de Django en un blog. Primero, necesitamos usar nuestros Modelos para crear tablas en la base de datos ejecutando el siguiente comando:

Cada vez que cambie sus modelos, debe ejecutar este comando para actualizar la base de datos. Tenga en cuenta que esto no puede alterar los campos existentes; solo puede agregar nuevos. Entonces, si quiere eliminar campos, tendrá que hacerlo manualmente con algo como PhpMyAdmin. Como esta es la primera vez que ejecutamos el comando, Django configurará todas las tablas integradas predeterminadas para cosas como el sistema de administración. Simplemente escriba "sí" y luego llene en sus detalles.

Ahora configuremos el archivo urls.py. Descomente la primera línea en la sección de ejemplos, y cámbiela para decirurl (r '^ $', 'FirstBlog.blog.views.home', name = 'home').

Ahora, creamos el archivo de vistas para responder a estas solicitudes.

Plantillas

Este archivo index.html aún no existe, así que hagámoslo. Cree una carpeta, llamada plantillas en la aplicación del blog y guarde un archivo llamado index.html, que simplemente puede contener "Hello World" por el momento. Luego, necesitamos editar el archivo de configuración para que Django sepa dónde se encuentra esta plantilla.

La línea 105 es donde comienza la sección para declarar carpetas de plantillas; por tanto ajústelo, así:

Si ejecuta el servidor nuevamente y actualiza la página en su navegador, debería ver el mensaje "Hola mundo". Ahora podemos comenzar a diseñar nuestro blog. Agregaremos algunos HTML repetitivos para la página de inicio.

Si guarda y actualiza la página, debería ver que la página se ha actualizado con este nuevo contenido. El siguiente paso es agregar contenido dinámico de la base de datos. Para lograr esto, Django tiene un lenguaje de plantillas que le permite insertar variables con llaves. Cambie la sección central de su página para que se vea así:

A continuación, podemos pasar valores a estos marcadores de posición variables desde el archivo views.py creando un diccionario de valores.

Guarde y actualice, y debería ver que ahora está transfiriendo contenido a una plantilla desde su archivo de vistas. El último paso es obtener datos de nuestra base de datos y pasarlos en su lugar. Afortunadamente, podemos hacer todo esto sin consultas SQL, usando los modelos de Django. Necesitamos agregar nuestra aplicación de blog a nuestro proyecto FirstBlog cambiando otra configuración. Vaya aINSTALLED_APPS en la línea 112 y agregue el

a la lista.

A continuación, cambie views.py para que agregue datos de la base de datos

A continuación, actualice la plantilla para acceder a esta información.

Aquí, podemos acceder a todos los datos en nuestra tabla en el archivoviews.py, luego seleccionar solo las primeras diez entradas. Pasamos estos datos a la plantilla, recorremos las entradas y mostramos los datos con el HTML de nuestro sitio. Esto no funcionará todavía, porque no hay nada en la base de datos. Detener el servidor y ejecutar:

Esto agregará la nueva tabla para nuestras publicaciones a la base de datos. Luego, abra una nueva pestaña y escriba:

... escribe tu contraseña, presiona enter, y ejecuta:

Regrese a la pestaña anterior y ejecute el servidor nuevamente. Actualiza la página y deberías ver una publicación de blog con el contenido ficticio que acabas de agregar. Si ejecuta el comando MySQL unas cuantas veces más, debería ver que aparecen más publicaciones en la página cuando actualiza.

Sistema de Administración de Django

Lo último que tenemos que hacer hoy es revisar el sistema de administración de Django. Esta es una característica realmente poderosa de Django que le permite administrar su sitio sin escribir más código, como lo haría si estuviera creando un sitio desde cero. Para habilitarlo, necesitamos cambiar algunas configuraciones. Primero, descomente las líneas 4, 5, 13 y 16 en urls.py, para que pueda acceder a la página de administración. A continuación, vaya a la sección INSTALLED_APPS de settings.py y elimine el comentario 'django.contrib.admin', y 'django.contrib.admindocs', Para permitir que el administrador controle su tabla de publicaciones, cree un nuevo archivo llamado admin.py en la carpeta del blog y agregue las siguientes líneas:

Ejecute python2.6 manage.py syncdb nuevamente para agregar las tablas para la sección admin y reinicie el servidor.

Si visita 127.0.0.1:8000/admin ahora en su navegador, debería ver una página de inicio de sesión. Use los detalles que eligió antes cuando ejecutó el comando syncdb para iniciar sesión. Debería ver una sección, llamada Blog, con un subtítulo para la tabla de publicaciones. Puede usar esto para crear, editar y eliminar publicaciones de blog con una interfaz simple.

Eso es todo lo que hay que hacer. Acabas de crear un blog totalmente funcional, aunque simple. Para finalizar esta lección, vamos a ver cómo instalar Django en un servidor web.


Instalación en un Servidor Web

Existen dos tipos de alojamiento web, y uno que tenga afectará si puede usar Django. Si has compartido alojamiento, estás completamente a merced de tu anfitrión.

Muchos servidores web baratos no son compatibles con Python. Si bien PHP está casi garantizado, a menudo no es compatible con otros lenguajes. Deberá verificar el panel de control para determinar si Python (y Django) están disponibles. Obviamente, el proceso es ligeramente diferente con cada host. Casi todos los hosting se ejecutan en Apache, y podemos usarlo para alojar Django, usando los módulos mod_wsgi o mod_python Apache.

La mayoría de los servidores web ejecutan scripts en varios lenguajes utilizando CGI. Django puede ejecutarse en FastCGI, y también, teóricamente, en CGI, pero esto no es oficialmente compatible y sería demasiado lento para un sitio web de producción real. Deberá verificar si están instalados. Generalmente se encuentran bajo un encabezado, como "CGI y soporte de lenguaje de scripting".

Si tiene hosting VPS, o tiene la suerte de tener un servidor dedicado, su vida es mucho más fácil. Por lo general, estos vienen con Python preinstalado, y desde allí, solo necesita seguir los mismos pasos que pasamos para obtener una copia local de Django en ejecución. Si no tiene Python, puede instalarlo con un administrador de paquetes. Tu sistema incluso puede venir con Django.

Una vez que haya instalado Django en su servidor, cargue el sitio que acaba de crear utilizando cualquier cliente de transferencia de archivos. Puede colocar los archivos en cualquier lugar, pero manténgalos fuera de la carpeta public, o cualquier persona podrá ver el código fuente de su sitio. Yo uso /home para todos mis proyectos.

A continuación, cree una base de datos MySQL, llamada 'firstblog' en su servidor y vuelva a ejecutarsyncdb. Deberá volver a crear su cuenta para el panel de control de administrador, pero esto es algo que ocurre una sola vez.

Si intenta ejecutar esto, es posible que reciba un error, y eso se debe a que las configuraciones para el servidor son diferentes a las de su computadora local. Es posible que necesite cambiar la contraseña de la base de datos dentro de settings.py, pero dependiendo de la configuración de su servidor, también puede encontrar otros problemas. ¡Google es tu amigo en estas situaciones!

Para ejecutar el servidor esta vez, el comando es ligeramente diferente. Debe especificar una dirección IP y un puerto para que pueda acceder al sitio a través de Internet.

Si usted visita su sitio en un navegador web, en el puerto 8000, ¡debería ver su sitio!


Conclusión

Eso es todo por esta lección ... y nuestras series. Espero que hayas aprendido varias habilidades útiles en las últimas cinco lecciones, y que estés listo para aprender aún más Python en el futuro. Si le gusta el aspecto de Django, y desea seguir aumentando su conocimiento del framework, aquí hay algunos tutoriales adicionales sobre el tema.

Como siempre, me complace comentar cualquier pregunta sobre este tutorial o Python en general dentro de los comentarios. Gracias por leer.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.