Introducción a Django
-
Upload
julio-galvez -
Category
Technology
-
view
443 -
download
1
Transcript of Introducción a Django
Características
• Framework web• Escrito en Python• Desarrollo rápido• Limpio• DRY• MTV• Admin automático
Características
• No usa punto y coma• No usa llaves de apertura/cierre• Tabulaciones obligatorias• Código Legible
MTV
• Mapeo Objeto-Relacional (M)• URL's y Vistas (V)• Plantillas (T)
Primer Proyecto
django-admin startproject blog
Estructura
blog/ manage.py blog/
__init__.py settings.py urls.py wsgi.py
Sincronizar BD
python manage.py migrate
Correr servidor
python manage.py runserver
Crear Aplicación
python manage.py startapp blog
Crear Aplicación
blog/ __init__.py admin.py migrations/ __init__.py models.py tests.py views.py
Tablas
Tablas = Class
No hay Sintaxis SQL
ID’s e índices automáticos
Relación por Clase, no por ID
Clases
class Articulo(models.Model): titulo = models.CharField(max_length=100) contenido = models.TextField() tags = models.TextField(blank=True, null=True)
def __str__(self): # __unicode__ on Python 2
return self.titulo
Clases
class Comentario(models.Model): articulo = models.ForeignKey(Articulo) comentario = models.TextField()
def __str__(self): # __unicode__ on Python 2
return self.comentario
Shell
python manage.py shell
Importar Modelos
from blog.models import Articulo, Comentario
Ejemplo SQL
select comentario, titulo from Comentario LEFT JOIN Articulo ON Articulo.id = Comentario.id_articulo
Ejemplo Django
c = Comentario.objects.all()
c.articulo.titulo
Ejemplos
select * from Articulo where id = 5
Articulo.objects.get(id=5)
Ejemplos
select * from Articulo where id = 5 order by titulo
Articulo.objects.filter(id=5).order_by('titulo')
Ejemplos
select * from Articulo where id > 5 order by titulo
Articulo.objects.filter(id__gt = 5).order_by('titulo')
Ejemplos
select * from Blog where id > 5 order by titulo DESC
Articulo.objects.filter(id__gt = 5).order_by('-titulo')
Ejemplo Insert
INSERT INTO Articulo (‘titulo’, ‘contenido’, ‘tags’) VALUES (‘mi libro’, ‘bla bla bla’, ‘libro, personal, bla bla’);
a = Articulo()a.titulo = ‘mi libro’a.contenido = ‘bla bla bla’a.tags = ‘libro, personal, bla bla’a.save()
Ejemplo Update
UPDATE Articulo SET titulo=‘no era mi lilbro’ WHERE id = 5
a = Articulo.objects.get(id=5)a.titulo = ‘no era mi libro’a.save()
Ejemplo Delete
DELETE FROM Articulo WHERE id = 5
a = Articulo.objects.get(id=5)a.delete()
Admin
localhost:8000/admin
admin.py
from .models import Articulo, Comentario
admin.site.register(Articulo)admin.site.register(Comentario)
Vista Post Lista
def lista_post(request): posts = Articulo.objects.all().order_by(‘id’) return render(request, ‘blog/lista.html’, locals() )
Template Lista
{% for p in posts %} <div class=‘post’> <h2> <a href=‘/detalle/{{ p.id }}’ >{{ p.titulo }}</a> </h2> <p> {{ p.contenido }} </p> </div> {% endfor %}
Vista Detalle Post
def detalle_post(request, id_post): post = Articulo.objects.get(id = id_post) comentarios = Comentario.objects.filter(articulo = post)
return render(request, ‘blog/detalle.html’, locals() )
Template Lista
<div class=‘post’> <h2>
{{ post }} </h2> <p> {{ post .contenido }} </p> </div>
{% for c in comentarios %} <p> {{ c }} </p> <hr />{% endfor %}