Documente Academic
Documente Profesional
Documente Cultură
$ virtualenv mundial-brasil-env
Ahora debemos activar nuestro entorno virtual, instalar Django y crear nuestro proyecto:
"mundial_brasil":
$ cd mundial-brasil-env
$ source bin/activate
(mundial-brasil-env)$
(mundial-brasil-env)$ cd mundial_brasil
(mundial-brasil-env)$ ls
manage.py mundial_brasil
y como separar nuestro proyecto Django en Aplicaciones . En nuestro caso solo vamos a
tener una Url: http://127.0.0.1:8000/ , que mostrar la lista de partidos ordenados por
proyecto.
(mundial-brasil-env)$ ls
equipos manage.py mundial_brasil partidos
# Application definition
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions ',
'django.contrib.messages ',
'django.contrib.staticfiles ',
'equipos',
'partidos',
)
3. Modelos
La aplicacin "equipos" contiene 2 modelos: Grupo y Equipo GRUPO Se corresponde
del grupo. Es nico, no puede haber dos grupos con la misma letra y Obligatorio.
equipo. Es obligatorio.
cdigo del pas para usarlo posteriormente a la hora de mostrar la bandera del
class Grupo(models.Model):
letra = models.CharField(max_length=1, unique=True)
def __str__(self):
def __unicode__(self):
class Equipo(models.Model):
nombre = models.CharField(max_length=100)
def __str__(self):
return self.nombre
def __unicode__(self):
return self.nombre
Vamos ahora con los modelos de la aplicacin "partidos". En nuestra
local: Es la clave ajena ( Foreign Key) del Equipo que juega como local.
Obligatorio.
visitante: Es la clave ajena ( Foreign Key) del Equipo que juega como
visitante. Obligatorio.
partido. Obligatorio.
class Partido(models.Model):
fecha = models.DateTimeField()
def __str__(self):
return unicode(self.local) + ' vs ' + unicode(self.visitante) +
' ' + str(self.fecha)
def __unicode__(self):
admin.site.register(Equipo)
admin.site.register(Grupo)
Lo que hacemos es importar los modelos y registrarlos en el admin de Django. El
archivoadmin.py de la aplicacin "partidos" deber ser:
admin.site.register(Partido)
Grupos y Equipos:
Partidos:
5. Urls.
Nuestra aplicacin solo va tener una ruta , adems de las del admin de Django.
url(r'^admin/', include(admin.site.urls)),
6. Views.
Una vez ya tenemos definida nuestra ruta, tenemos que crear la vista que hemos indicado
fichero .py ) views.py debe existir la definicin de la vista o funcion "ver_partidos". Esta
vista solo recibir la peticin, sacar de la base de datos todos los partidos ordenados
por fecha y renderizar un template HTML que mostraremos al usuario con los
def ver_partidos(request):
partidos = Partido.objects.all().order_by('fecha')
return render(request,'partidos/ver_partidos.html ',{ 'partidos':partidos
})
Como puedes observar, lo que hacemos es consultar todos los partidos ordenados
por fecha y luego renderizar el template 'partidos/ver_partidos.html' y pasndole
como contexto los ''partidos' que hemos recuperado. Pasamos ahora a crear
nuestra plantilla o template.
7. Template
En el anterior punto vimos que renderizabamos un template: 'partidos/ver_partidos.html' .
Django por defecto buscar este template usando los dos loaders de bsqueda de
Modo bsico:
{{ partido.fecha }} {% endfor %}
Como puedes observar para mostrar la bandera de cada pas nos servimos de
una web externa, no es lo ms recomendable, pero por efectos prcticos y de
simplicidad lo he realizado as. Mediante el cdigo del pas ("es", "us", etc.)
podemos mostrar la bandera del pas alojada en http://flagpedia.net. Adems si
aadimos un poco de Twitter Bootstrap y algunos retoques podemos obtener algo
as: "ver_partidos.html" - Con Twitter Bootstrap:
<html>
<head>
<meta charset="utf-8">
<body>
<div class="container">
<h1>
<img src="http://3.bp.blogspot.com/-E_FuHCg3o1k/UqQwq9sqtAI/AAAAAAAADF
k/HAOEraQPVJA/s1600/brasil_2014.png" width="200px">
</h1>
{% for partido in partidos %}
</div>
{% cycle '' '' '</div>' %}
{% endfor %}
<hr>
<footer>
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
</body>
</html>
8. Comentarios finales.
Como has podido ver el desarrollo en Django es muy gil, pero en este artculo hemos
dejado muchas cosas importantes sin explicar: Formularios, Ajax, Class Base Views,
complejas, servir archivos estticos ( javascript, css, imgenes ) con Django y mucho