Hemos cubierto un poco de Python en los tutoriales anteriores de esta sesión. Hoy, vamos a combinar todo lo que hemos aprendido hasta ahora para crear un sitio web dinámico con Python.
Entonces, ¿cómo empezar a crear sitios web con Python? Bueno, puede hacerlo todo usted mismo y escribir un programa que se ejecute en un servidor web, aceptando solicitudes de página y ofreciendo respuestas en forma de HTML y otros recursos. Sin embargo, eso es mucho trabajo, así que ¿por qué molestarse cuando hay muchas herramientas disponibles para hacer el trabajo por usted? Estas herramientas se denominan marcos, y son las que usaremos hoy para crear nuestro sitio web.
Hay bastantes marcos web de Python, pero aquí están algunos de los mejores:
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..
Hoy realizaremos la mayor parte de nuestro trabajo en la Terminal. Todo esto debería funcionar en Mac y Linux; Sin embargo, si está ejecutando Windows, el proceso es algo diferente. Sin embargo, no es necesario estar familiarizado con la línea de comandos si solo estás escribiendo Python, si estás planeando usar Django o ejecutar un sitio web dinámico en general, vale la pena aprender..
Considera revisar estos tutoriales para ponerte en marcha con la Terminal.
Aquí están los comandos que necesitas para instalar Django. No es compatible con Python 3, por lo que deberá instalar la versión 2.7 o anterior para que funcione..
wget http://www.djangoproject.com/download/1.3.1/tarball/ tar xzvf Django-1.3.1.tar.gz cd Django-1.3.1 python setup.py instalar
A continuación, opcionalmente podemos eliminar los archivos de instalación..
cd… rm Django-1.3.1.tar.gz
¡Deberias hacer eso! Vamos a probarlo.
python desde django import get_version get_version ()
Debería ver '1.3.1'. Si lo haces, todo funcionó y Django está instalado en tu sistema. ¡Felicidades! Estamos listos para comenzar a crear nuestro sitio.!
Vamos a construir un sistema de blog hoy, porque es una excelente manera de aprender lo básico. Primero, necesitamos crear un proyecto Django..
cd ~ / Documents / Projects django-admin.py startproject FirstBlog cd FirstBlog ls
¿Qué hace 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 todos los scripts en la carpeta como módulos.manage.py
no es realmente parte de su sitio web; es un script de utilidad que se ejecuta desde la línea de comandos. Contiene una serie 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 serie de variables que definen la configuración de su sitio..urls.py
es el archivo que mapea URLs a páginas. Por ejemplo, podría mapear yourwebsite.com/about a una Sobre nosotros página. Django se refiere a sí mismo como un marco de MTV, que significa Vista de plantilla de modelo.
Sin embargo, ninguno de estos archivos, por sí mismos, hace un sitio web funcional. Para eso, necesitamos apps. Las aplicaciones son donde se escribe el código que hace que funcione su sitio web, pero antes de que las examinemos, debemos comprender un poco los principios de diseño de Django..
Primero, Django es un framework MVC, que significa Model View Controller. Django se refiere a sí mismo como un marco de MTV, que significa Vista de plantilla de modelo. Es un enfoque ligeramente diferente al 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 usa para procesar los datos del código que administra la interfaz de usuario.
Django se suscribe a la filosofía DRY o "Don't Repeat Yourself".
En segundo lugar, Django se suscribe a la filosofía DRY o Don't Repeat Yourself, lo que significa que nunca debe escribir código que realice una determinada tarea más de una vez. Por ejemplo, en nuestro blog, si escribiéramos una función que seleccionara un artículo aleatorio del archivo e implementáramos esta función en varias páginas, no lo codificaríamos nuevamente 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 anterior, esto significa que si hiciéramos otro sitio en el futuro que también necesitara una función de página aleatoria, no tendríamos que escribirlo todo de nuevo. 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 más tarde, debe importarla toda. Si estuviera creando un sitio web de comercio electrónico, por ejemplo, no querría 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 seleccionar y elegir los bits que necesita.
Esto también significa que dentro del sitio, el código está bien organizado. Si desea modificar una función, no tiene que buscar en un archivo masivo; en su lugar, puede buscar la aplicación correspondiente y cambiarla sin preocuparse por interferir con otra cosa..
python mangage.py startapp blog cd blog ls
Una vez más, tenemos un __init__.py
Archivo para convertirlo en un paquete, y otros tres archivos: modelos, pruebas y vistas. No tenemos que preocuparnos por las pruebas por ahora, pero las otras dos son importantes. Modelos y vistas son los METRO
y V
partes de MVC.
En modelos, definimos nuestras estructuras de datos..
Si alguna vez ha trabajado con PHP antes, podría 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 están hechas para nosotros.
Cuando desea acceder a esos datos, puede utilizar estos modelos a través de estos modelos, en lugar de ejecutar consultas en bruto. Esto es muy útil, porque Django puede usar varios programas de base de datos. Vamos a usar MySQL hoy, porque es el más poderoso y es lo que ofrecen la mayoría de los hosts, pero si necesitamos cambiar a una base de datos diferente en el futuro, ¡todo el código seguirá siendo válido! En otros idiomas, si desea cambiar a SQLite o algo similar, deberá volver a escribir el código que accede a su base de datos..
En el archivo de vistas, escribimos el código que genera las páginas web. Esto une todas las otras partes juntas. Cuando un usuario escribe una URL, es enviado por el urls
guión que vimos anteriormente a la puntos de vista
El script, que luego obtiene los datos relevantes de los modelos, lo procesa y lo pasa a una plantilla, que finalmente se presenta como la página que el usuario ve. Vamos a echar un vistazo a esas plantillas en breve. Son la parte más fácil - en su mayoría 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..
desde django.db importar modelos clase posts (models.Model): author = models.CharField (max_length = 30) title = models.CharField (max_length = 100) bodytext = models.TextField () timestamp = models.DateTimeField ()
Estos modelos son solo una descripción. Necesitamos hacer una base de datos real de ellos. Primero, sin embargo, necesitamos que se ejecute MySQL en nuestro sistema. En un servidor web real, esto no sería un problema, ya que generalmente lo tienen preinstalado. Por suerte, con un gestor de paquetes, es fácil de instalar. Primero, necesitas instalar Homebrew y Easy Install
brew install mysql easy_install mysql-python mysqld_safe --skip-grant-tables #todos tienen permisos completos mysql -u root ACTUALIZACIÓN mysql.user SET Password = PASSWORD ('nettuts') WHERE User = "root"; # le da al usuario 'root' una contraseña FLUSH PRIVILEGES; mysql -u root -p # inicia sesión con nuestra contraseña 'nettuts' CREATE DATABASE firstblog; salir de python2.6 manage.py runserver
Cuando reinicies, MySQL no se ejecutará, por lo que cada vez que necesites hacer esto en el futuro, ejecuta 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 no ejecutará el servidor todavía, solo devolverá un error. Eso es porque necesitamos configurar nuestras configuraciones. Echemos un vistazo a settings.py
.
Necesitas cambiar la configuración de la base de datos primero. Estos comienzan en la línea doce..
BASES DE DATOS = 'default': 'ENGINE': 'django.db.backends.mysql', # Agregar 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 'NAME': 'firstblog', # o ruta al archivo de base de datos si usa sqlite3. 'USER': 'root', # No se usa con sqlite3. 'PASSWORD': 'nettuts', # No se usa con sqlite3. 'HOST': ", # Establecer en cadena vacía para localhost. No se usa con sqlite3. 'PORT':", # Establecer en cadena vacía para el valor predeterminado. No se utiliza con sqlite3.
Si intenta ejecutar el servidor nuevamente, debería funcionar, siempre que haya instalado MySQL correctamente. Si tú visitas 127.0.0.1:8000
en su navegador web, debería ver la página predeterminada de Django.
Ahora vamos a convertir nuestro sitio Django en un blog. Primero, necesitamos usar nuestros modelos para crear tablas en la base de datos ejecutando el siguiente comando:
python2.6 manage.py syncdb
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; Sólo puede agregar nuevos. Entonces, si quieres eliminar campos, tendrás que hacerlo manualmente con algo como PhpMyAdmin. Debido a que 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 complete sus datos.
Ahora vamos a configurar el urls.py
expediente. Descomente la primera línea en la sección de ejemplos y cámbiela para decir url (r '^ $', 'FirstBlog.blog.views.home', name = "home")
.
Ahora, vamos a crear el archivo de vistas para responder a estas solicitudes.
desde django.shortcuts importar render_to_response desde blog.models importar entradas def home (solicitud): devolver render_to_response ('index.html')
Esta index.html
El archivo no existe todavía, así que hagámoslo. Crea una carpeta, llamada plantillas en la Blog
Aplicación y guardar un archivo en el llamado index.html
, que puede contener simplemente "Hello World" por ahora. Luego, debemos 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; así que ajústalo, así:
TEMPLATE_DIRS = ("blog / templates", # Ponga cadenas aquí, como "/ home / html / django_templates" o "C: / www / django / templates". # Siempre use barras diagonales, incluso en Windows. # No olvide usar rutas absolutas, no rutas relativas.)
Si vuelve a ejecutar el servidor y actualiza la página en su navegador, debería ver el mensaje "Hola mundo". Ahora podemos empezar a diseñar nuestro blog. Agregaremos algo de código HTML para la página de inicio..
Primer blog Primer blog
Título
Publicado en fecha por autor
Cuerpo de texto
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 desde la base de datos. Para lograr esto, Django tiene un lenguaje de plantillas que le permite incrustar variables con llaves. Cambia la sección central de tu página para que se vea así:
Primer blog
title
Publicado en fecha por autor
cuerpo
Entonces podemos pasar valores a estos marcadores de posición variables desde el vistas.py
archivo creando un diccionario de valores.
from django.shortcuts import render_to_response from blog.models import posts def home (solicitud): content = 'title': 'My First Post', 'author': 'Giles', 'date': '18th September 2011', ' body ':' Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam cursus tempus dui, ut vulputate nisl eleifend eget. Aenean justo felis, dapibus quis vulputate en, porta et dolor. Praesent enim libero, malesuada nec vestibulum vitae, fermentum nec ligula. Etiam eget convallis turpis. Donec non sem justo. ', Devolver render_to_response (' index.html ', contenido)
Guarde y actualice, y debería ver que ahora está pasando el contenido a una plantilla desde su archivo de vistas. El paso final es obtener datos de nuestra base de datos y pasarlos en su lugar. Afortunadamente, podemos hacer todo esto sin consultas SQL, utilizando los modelos de Django. Necesitamos añadir nuestro Blog
aplicación a nuestro FirstBlog
proyecto cambiando otra configuración. Ir INSTALLED_APPS
en la línea 112, y agregue el
'FirstBlog.blog',
a la lista.
Entonces cambia vistas.py
por lo que agrega datos de la base de datos.
from django.shortcuts import render_to_response from blog.models import posts def home (solicitud): entries = posts.objects.all () [: 10] return render_to_response ('index.html', 'posts': entries)
A continuación, actualice la plantilla para acceder a estos datos..
Primer blog
% para publicaciones en publicaciones%título de la entrada
Publicado en post.timestamp por post.author
post.bodytext
% endfor%
Aquí, podemos acceder a todos los datos en nuestra tabla en el vistas.py
archivo, a continuación, seleccione sólo las diez primeras entradas. Pasamos estos datos a la plantilla, recorramos 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. Detenga el servidor y ejecute:
python2.6 manage.py syncdb
Esto agregará la nueva tabla para nuestras publicaciones en la base de datos. Luego, abre una nueva pestaña y escribe:
mysql -u root -p
... escribe tu contraseña, pulsa enter y ejecuta:
INSERTAR EN blog_posts (autor, título, texto corporal) valores ('Bob', 'Hola mundo', 'Lorem Ipsum');
Regrese a la pestaña anterior y ejecute el servidor nuevamente. Actualice la página y debería ver una publicación de blog con el contenido ficticio que acaba de agregar. Si ejecuta el comando MySQL un par de veces más, debería ver más publicaciones aparecer en la página cuando actualice.
Lo último que debemos 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ódigos, como lo haría si estuviera creando un sitio desde cero. Para habilitarlo, necesitamos cambiar algunas configuraciones. Primero, descomenta las líneas 4, 5, 13 y 16 dentro de urls.py
, para que realmente pueda acceder a la página de administración. A continuación, vaya a la INSTALLED_APPS
Sección de settings.py
y descomentar 'django.contrib.admin',
y 'django.contrib.admindocs',
. Para permitir que el administrador controle su puestos
tabla, crea un nuevo archivo llamado admin.py
en el Blog
carpeta, y añadir las siguientes líneas:
desde django.contrib importar administrador desde blog.models importar publicaciones admin.site.register (publicaciones)
correr python2.6 manage.py syncdb
de nuevo para agregar las tablas para la sección de administración y reiniciar el servidor.
Si tú visitas 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ó la syncdb
comando para iniciar sesión. Debería ver una sección, llamada Blog, con un subtítulo para el puestos
mesa. Puede usar esto para crear, editar y eliminar publicaciones de blog con una interfaz simple.
Eso es todo lo que hay que hacer. Acaba de crear un blog completamente funcional, aunque simple. Para terminar esta lección, veremos cómo instalar Django en un servidor web.
Hay dos tipos de alojamiento web, y el que tengas afectará si puedes usar Django. Si ha compartido alojamiento, está completamente a merced de su anfitrión..
Muchos servidores web baratos no soportan Python. Si bien PHP está casi garantizado, el soporte para otros idiomas a menudo no lo está. Tendrás que revisar el panel de control para determinar si Python (y Django) están disponibles. Obviamente el proceso es ligeramente diferente con cada host. Casi todo el alojamiento se ejecuta en Apache, y podemos usarlo para alojar Django, usando el
mod_wsgi
omod_python
Módulos apache.
La mayoría de los hosts web ejecutan scripts en varios idiomas utilizando CGI. Django puede ejecutarse en FastCGI, y también, teóricamente, en CGI, pero esto no tiene soporte oficial y sería demasiado lento para un sitio web de producción real. Tendrás que comprobar si están instalados. Por lo general, se encuentran debajo de un encabezado, como "CGI y Scripting Language Support".
Si tiene VPS hosting, 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 necesitas seguir los mismos pasos que realizamos 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.
ssh [email protected] wget http://www.djangoproject.com/download/1.3.1/tarball/ tar xzvf Django-1.3.1.tar.gz cd Django-1.3.1 python setup.py install
Una vez que haya instalado Django en su servidor, cargue el sitio que acaba de crear con cualquier cliente de transferencia de archivos. Puede colocar los archivos en cualquier lugar, pero manténgalos fuera del público
o cualquier persona podrá ver el código fuente de su sitio. yo suelo /casa
para todos mis proyectos.
A continuación, cree una base de datos MySQL, llamada 'primer blog' en su servidor y ejecute syncdb
otra vez. Tendrá que volver a crear su cuenta para el panel de control de administración, pero esto es algo que solo ocurre una vez..
Si intenta y ejecuta esto, puede recibir un error, y eso se debe a que la configuración del servidor es diferente a la de su computadora local. Es posible que deba 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 poder acceder al sitio a través de Internet.
python manage.py runserver 0.0.0.0:8000
Si visita su sitio en un navegador web, en el puerto 8000, debería ver su sitio!
Eso es todo para esta lección ... y nuestra serie. Espero que hayas aprendido una serie de habilidades útiles en estas últimas cinco lecciones, y que estés listo para continuar y aprender aún más Python en el futuro. Si le gusta el aspecto de Django y desea continuar aumentando su conocimiento del marco, aquí hay algunos tutoriales adicionales sobre el tema..
Como siempre, me complace discutir cualquier pregunta sobre este tutorial o sobre Python en general en los comentarios. Gracias por leer.
Aprende Python con nuestra completa guía de tutoriales de Python, ya sea que estés empezando o seas un programador experimentado que busca aprender nuevas habilidades..