Documentos de Académico
Documentos de Profesional
Documentos de Cultura
04 Taller Django 130801213244 Phpapp01 PDF
04 Taller Django 130801213244 Phpapp01 PDF
Introducción
El desarrollo web no es tarea fácil, en los tiempos que corren actualmente se están
gestando cambios significativos en los paradigmas orientados a la web.
Cuando hayamos terminado este paso, nos daremos cuenta que empleamos nuestro
tiempo, creando y manteniendo funcionalidades, en vez de emplearlas en nuestros proyectos.
Django Framework
Django es un framework de desarrollo web de código
abierto, escrito en Python, que cumple en cierta
medida el paradigma del Modelo Vista Controlador.
Fue desarrollado en origen para gestionar varias
páginas orientadas a noticias de la World Company
de Lawrence, Kansas, y fue liberada al público bajo
una licencia BSD en julio de 2005; el framework fue
nombrado en alusión al guitarrista de jazz gitano Django Reinhardt. En junio del 2008 fue
anunciado que la recién formada Django Software Foundation se haría cargo de Django en el
futuro.
Preparando el entorno
Antes de nada, cabe recordar, que Django está totalmente escrito en el Lenguaje de
Programación Python, por lo que lo deberás tener instalado en tu sistema.
Si usas GNU/Linux o Mac OS X, es más que seguro, de que tengas instalado una versión
de python, de lo contrario puedes visitar http://www.python.org/ para descargar según la
plataforma donde lo necesites usar.
Si utilizas otro sistema operativo, usa el descompresor que tengas instalado para realizar
la operación anterior.
Con estos archivos, tenemos lo necesario para instalar Django en nuestro sistema, para
ello navega, hasta la carpeta generada en la extracción del archivo .tar.gz, abre una consola en
ese lugar (o bien navega desde una que hayas abierto) y escribe:
Su estas en otras plataformas, puedes abrir una terminal de sistema, con privilegios
administrativos, y escribir:
Setup.py creará los directorios necesarios, como así también todos los enlaces y librerías
que necesites para comenzar a crear y modelar tus proyectos con Django.
Nota:
Este material, está pensado para entornos de desarrollo bajo GNU/Linux, la mayoría de
las instrucciones explícitas y comandos estarán orientadas al mismo, exceptuando instrucciones
de Django, que son estándares para todas las plataformas que este soporte.
Taller Django
Para ello, nos situamos en un directorio, que utilicemos para nuestro desarrollo, (se
aconseja crear un directorio vacío, que únicamente albergue elementos relacionados con este
propósito), y escribimos en una terminal (ubicada en el antes mencionado directorio) el
comando.
__init__.py: Es un archivo vacío. Por ahora, no necesitas poner nada allí, éste es usado,
para señalar a python que el directorio, es un módulo completo.
Nota: en las nuevas versiones de Django, el subdirectorio de cada aplicación contiene los
archivos antes mencionados, exceptuando manage.py, dado que una aplicación, no debería
manejar todo un proyecto, y agregando en su lugar wsgi.py, que permite enlazar el servidor
Django de nuestro proyecto como elemento CGI a, por ejemplo Apache.
Taller Django
Un simple CMS
Uno de los desarrollos más populares, es crear un Sistema de Manejo de Contenidos
(CMS), que le permite al usuario crear y administrar páginas basándose en una interfaz
administrativa.
Para ello, crea un proyecto llamado “cms”, al igual que creamos nuestro ejemplo
“miProyecto”, en el inciso anterior. Sitúate en el directorio del directorio “cms” del proyecto, y
abre con tu editor preferido, el archivo settings.py .
• Bases de datos
Una vez abierto, verás, cuan largo es, pero no te compliques todavía en pensar que es
todo eso, simplemente vamos a modificar un par de líneas para enlazarlo a nuestro motor de
base de datos. Comienza a moverte en el archivo, y busca la línea “DATABASE_ENGINE”,
encontrarás algo similar a esto.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
Ahora, tenemos configurado nuestro acceso al motor de bases de datos, que emplearemos
para el proyecto.
• Templates
TEMPLATE_DIRS = (
'primerBlog/templates', #Agrega esto, como elemento de la tupla
)
• Aplicaciones Instaladas
Una vez configuradas las opciones de bases de datos y templates, solo nos falta un paso
más, el inciso de “aplicaciones instaladas”, que contiene las aplicaciones que django, enlaza
para utilizarlas como disponibles. Para ello navegamos hasta la línea que contenga algo similar
a esto.
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'primerBlog', # Agregamos esta línea para habilitar a nuestra aplicación
'django.contrib.admin', # Agregamos esta línea para habilitar el administrador
)
Taller Django
• Modelos
Una forma de desarrollo organizado, debe implementar técnicas genéricas que
permitan la flexibilidad de expresar los datos, que nuestro proyecto necesita para
funcionar. Por ejemplo en un blog, los artículos se componen de elementos individualizados
que agrupados forman un artículo completo, el título, bajada, contenido y fecha.
En Django, estos elementos se ven reflejados en las bases de datos, con lo que los
modelos deben ser de intermediarios entre las bases de datos y nuestro esquema de
abstracción. En Django, los modelos se encuentran en el archivo “models.py”, (de no
existir, crearlo), con el siguiente código en su interior.
class articulo(models.Model):
El objeto models, contiene todos los tipos de datos soportados, o serializados para
ser soportados por la mayoría de las bases de datos. Por “ejemplomodels.CharField()”
contiene las instrucciones para generar campos VarChar de longitud definida por
“max_length”. Un modelo instanciado, es un objeto capaz de editar, eliminar y generar
nuevos registros en las bases de datos.
• Admin
Bien, con esta breve pero descriptiva introducción a las vistas, comencemos a
generar la nuestra, las vistas, es decir cada interacción, se guarda dentro del archivo
“views.py”. La estructura básica de una vista es la siguiente.
Para organizar un poco las cosas, definamos algunos elementos que aparecen en
este script.
En este caso “articulo”, es el objeto del modelo, que permite la consulta con las
bases de datos, pero puede ser una librería de manejo de sockets, una función que lea un
archivo, o simplemente cualquier objeto que genere una respuesta “String”, si es que se
desea responder al cliente, caso contrario, puede ser cualquier objeto que ejecute una
función, el único detalle, es que ese objeto no podrá referirse como elemento de respuesta a
la plantilla.
La función “home()”, hereda del objeto “request”, que contiene las funciones
necesarias para manejar consultas desde el servidor. Cada función que definamos, es
considerada como una vista individual, y accesible desde los patrones ubicados en
“urls.py”. Tener en cuenta que cada función debe heredar al objeto “request”.
Taller Django
Ahora que tenemos claro como se compone una vista, expliquemos un poco, como
funciona la asignación dinámica en las plantillas. La función “render_to_response”, puede
recibir de modo opcional un diccionario, con las referencias de las claves, donde son
reemplazadas por su valor explícito. Así que generemos una para nuestro ejemplo.
def home(request):
entradas = articulo.objects.all()[:10]
data = {"articulos" : entradas}
return (render_to_response("home.html", data))
<body>
<h3>Blog</h3>
<hr />
{% for post in articulos %}
<h2>{{ post.titulo }}</h2>
<h3> Posteado el {{ post.fecha }}</h3>
<p> {{ post.bajada }}</p>
<p> {{ post.cuerpo }}</p>
<hr />
{% endfor %}
</body>
Ahora bien, pongamos atención total al sistema de plantillas que ofrece Django. Si
recuerdas bien, a la función “render_to_response”, pasamos como parámetro un
diccionario que contenía la clave “articulos”, bien, esa misma clave es referenciada para
obtener su valor asociado, y como ese valor asociado es un objeto, podemos iterar sobre él.
Cada vez que necesitemos mostrar una variable en una plantilla, lo único que
Taller Django
tenemos que hacer es encerrarla en llaves dobles “{{ mivariable }}”, y estas pueden estar
iteradas por una función. Y vamos otra vez pero con funciones, cada vez que necesitemos
hacer una función iterable lo único que necesitamos hacer es encerrarla dentro de llaves
seguidas del carácter porcentual “{% funcionIterable %}”, podemos incluir bucles “for” y
validaciones “if” por ejemplo, y terminamos la iteración de dicha función con una llave
seguida del carácter porcentual y la palabra “end” seguida del nombre de la función “{%
endfuncionIterable %}”.
Ahora bien, aparece la pregunta clásica, ¿que hace post.titulo?, y obtiene una
respuesta muy fácil, “post.titulo”, hace referencia al objeto “models” asociado en el
diccionario, donde “titulo”, “fecha”, “bajada” y “cuerpo”, son los atributos del objeto, es
decir los campos de la base de datos.
• Manage.py
Una vez llegado a este punto, tenemos nuestro CMS configurado, y listo para
funcionar, pero antes unos comandos esenciales. Sincronizar los modelos con las bases de
datos y correr el servidor, para ello.
Con este comando sincronizamos todos los modelos a las bases de datos, y Django,
crea por nosotros los necesarios para generar el Administrador, para ello, nos solicitará
usuarios y claves durante este proceso.
• Models Extra
b2.save()
Obtener un registro
Filtros Específicos
b2 = articulo.objects.filter(titulo__startswith= “MiTitulo”)
# Titulo inicia con “MiTitulo”, por ejemplo si tenemos “MiTitulo1”, “MiTitulo2”,
# etc en nuestra base de datos
b2 = articulo.exclude(titulo__icontains= “Excluir”)
# Excluir si el titulo contine “Excluir”
b2 = articulo.objects.filter(titulo=“mitutulo”)
# Filtro cuando titulo es igual a “mititulo”
b2 = articulo.objects.order_by(“titulo”)[0]
# Primer artículo, ordenado por “titulo”
b2 = articulo.objects.get(titulo__iexact= “MiTituloExacto”)
# El título contiene exactamente “MiTituloExacto”
b2 = articulo.objects.get(cuerpo__contains= “Python”)
# El cuerpo contiene la cadena “Python”
Los filtros pueden tomar como parámetros más de una limitante, es decir
“articulo.objects.filter(titulo=“mititulo”, bajada= “bajada1”)” y enlazar una salida a
otra, es decir “articulo.objects.filter(titulo=“mititulo”).filter(bajada= “bajada1”)”.
Taller Django
Eliminar un registro
b2 = articulo.get(titulo= “mitituloEliminar”)
b2.delete()
Actualizar un registro
# Método 1
b2 = articulo.get(titulo = “miTutulu”)
b2.update(titulo= “miTitulo”)
# Método 2
b2 = articulo.get(titulo = “miTutulu”)
b2.titulo = “miTitulo”
b2.save()