This is an introduction to Django that I gave in the University of Coruña. It is the same as I those in English but it's updated with generic views and model forms.
Esto es una introducción a Django que di en la Universidade da Coruña. Es la misma que las que tengo en inglés pero actualizada con vistas genéricas y formularios para modelos.
2. ¿Qué es?
"Django is a highlevel Python Web framework
that encourages rapid development and
clean, pragmatic design."
(de la página oficial de Django)
3. ¿Qué es?
Proyecto interno de Lawrence Journal-World en 2003
Debería ayudar a los periodistas con sus plazos cortos
No debería molestar a los periodistas
LLeva el nombre del guitarrista Django Reinhardt
5. Gran comunidad
Django tiene una gran comunidad y una extensa lista
de apps Django
Buscalas en http://code.google.com,
http://github.com o http://djangopackages.com
Otras páginas web interesantes:
Django Sites: http://www.djangosites.org
Django People: http://www.djangopeople.org
Django Community:https://www.djangoproject.com/community
9. Instalación
Tan simple como bajar el archivo o clonar el repositorio:
http://djangoproject.com/download
Después:
# python setup.py install
O entonces:
# easy_install install
18. Modelos
Los modelos son classes que representan objetos
en la base de datos
¡Y no tendrás que tocar en SQL jamás!
19. Modelos
class Post(models.Model):
title = models.CharField(max_length = 500)
content = models.TextField()
date = models.DateTimeField(auto_now = True)
...
20. Vistas
Las vistas son funciones que normalmente
procesan modelos e renderizan HTML
¡Es donde pasa la magia!
¿Cómo obtener todos los posts desde hace 5 días y ordenarlos
por fecha descendente?
21. Vistas
import datetime
def view_latest_posts(request):
# Last 5 days
date = datetime.datetime.now() - datetime.timedelta(5)
posts = Post.objects.filter(date__gte = date).order_by('-date')
return render_to_response('posts/show_posts.html',
{'posts': posts})
22. Vistas Genericas
Son vistas todavía más rápidas de usar, para
tareas comunes como listar o enseñar objetos.
from django.views.generic import DetailView, ListView
urlpatterns = patterns('Project.posts.views',
(r'^view/(?P<pk>d+)/$', DetailView.as_view(model=Post)),
(r'^posts/$', ListView.as_view(model=Post)),
Intentan usar los siguientes archivos por defecto:
post_detail.html y post_list.html
28. Formularios
Son clases que representan un formulario HTML
Dejan que se pueda facilmente configurar los
tipos esperados de inputs, mensages de error,
etiquetas, etc.
30. Formularios
def create_post(request):
if request.method == 'POST':
form = CreatePost(request.POST)
if form.is_valid():
# Create a new post object with data
# from form.cleaned_data
return HttpResponseRedirect('/index/')
else:
form = CreatePost()
return render_to_response('create.html', {
'form': form,
})
32. Formularios para models
Son formularios que se crean automaticamente a
partir de modelos, con tan solo:
from django.forms import ModelForm
class PostForm(models.ModelForm):
class Meta:
model = Post
34. Hosts para Django
Una extensa lista se encuentra en.
http://code.djangoproject.com/wiki/DjangoFriendlyWebHosts
Los populares:
http://www.statopia.com/corporate/blog/2007/aug/05/
PopularDjangoHostingService/
El Google AppEngine también lo pone facil para Django:
http://appengine.google.com/