Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Curso Django

paurosello
November 12, 2012

Curso Django

Curso Django ACM 2012

paurosello

November 12, 2012
Tweet

Other Decks in Technology

Transcript

  1. Curso de Django I Pau Roselló Van Schoor [email protected] ACM

    Facultad de Informática Universidad Politécnica de Madrid
  2. ACM Asociación de la Facultad de Informática de la UPM

    Puedes contactar con nosotros en: !  Web: http://acm.asoc.fi.upm.es !  Twitter: @acmfiupm !  Búscanos en Facebook y Tuenti Existimos desde 1986
  3. ¿Aplicación web Django ? ! Protocolo: HTTP ! Lenguaje en el Servidor:

    Python ! Lenguajes en el Cliente: HTML, Javascript, CSS
  4. ¿ Por qué elegir Django ? !  Desarrollo activo de

    la comunidad !  MVC como patrón de desarrollo !  ORM integrado !  Urls organizadas y limpias !  Panel de Administración !  Escrito en Python!
  5. Patrón de desarrollo (MVC) !  Modelo !  Abstracción de los

    datos a almacenar definido mediante clases y guardado en la base de datos. !  Vista !  Actúa como el controlador de MVC y decide cual es la información que se le manda al usuario. !  Template !  Define como se presenta la infomación al usuario.
  6. Iniciando un proyecto !  $> virtualenv venv && source venv/bin/activate

    !  $> pip install django !  $> django-admin.py startproject acmtut !  $> django-admin.py startapp encuestas
  7. Configuración de la base de datos DATABASES = { ’default':

    { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'db.db’ } }
  8. Zona de administración urls.py from django.contrib import admin admin.autodiscover() urlpatterns

    = patterns('’, … (r’ˆadmin/’, include(admin.site.urls)), …) Settings.py INSTALLED_APPS = ( … ’django.contrib.admin’, …)
  9. Modelo Tipos de Campos !  CharField !  DateTimeField !  EmailField

    !  ImageField !  SlugField Atributos de campo !  Blank !  Null !  Choices !  Default !  Unique
  10. Modelo Simple from django.db import models class Votacion(models.Model): titulo =

    models.CharField(max_length=150, primary_key=True) activa = models.BooleanField() fecha = models.DateTimeField(auto_now_add=True) slug = models.SlugField()
  11. Modelo Simple def __unicode__(self): return self.titulo def save(self, *args, **kwargs):

    self.slug = slugify(self.titulo) super(Votacion, self).save(*args, **kwargs) admin.site.register(Votacion)
  12. Relaciones !  Muchos a uno !  votacion = models.ForeignKey(Votacion) ! 

    Muchos a muchos !  ingredientes = models.ManyToManyField(Ingrediente) !  Uno a uno !  lugar = models.OneToOneField(Lugar)
  13. Modelo con Relaciones class Voto(models.Model): votacion = models.ForeignKey(Votacion) opcion =

    models.BooleanField() fecha = models.DateTimeField(auto_now_add=True) def __unicode__(self): return self.votacion + " " + self.opcion
  14. Vista !  Recojemos los datos y describimos la lógica de

    la vista !  Preparamos los datos a presentar !  Devolvemos la plantilla con los datos recogidos
  15. Template {% if is_logged_in %} <h1> Bienvenido {{usuario.nombre}} </h1> {%

    else %} <h1> Hola desconocido </h1> {% endif %}
  16. Herencia Templates {% extends “base.html” %} {% block contenido %}

    {% for votacion in votaciones %} <h1>{{votacion.titulo}}</h1> <h2>{{votacion.fecha|date:"d/m/Y”}}</h2> {% endfor %} {% endblock %}
  17. Formulario de un Modelo from django.forms import ModelForm class ArticleForm(ModelForm):

    class Meta: model = Votacion fields = ('titulo', 'activa')
  18. Vista de Formulario contexto = RequestContext(request) if request.method == 'POST':

    form = ArticleForm(request.POST, request.FILES) if form.is_valid(): form.save()
  19. Heroku !  Ejecución del servidor de Django. !  Base de

    datos. !  Pluguins para control y gestión de la aplicación. !  Actualizaciones rápidas. !  Aumentar los recursos de forma fácil y rápida.
  20. Heroku !  $> heroku logs (ver los logs de la

    aplicacion) !  $> heroku info (información sobre la aplicación) !  $> heroku pg:info (ver informacion sobre la bd)