Introducción a Django
Upcoming SlideShare
Loading in...5
×
 

Introducción a Django

on

  • 1,523 views

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. ...

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.

Statistics

Views

Total Views
1,523
Views on SlideShare
1,522
Embed Views
1

Actions

Likes
2
Downloads
32
Comments
0

1 Embed 1

http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Introducción a Django Introducción a Django Presentation Transcript

    • Introducción a DjangoUniversidade de A Coruña, 21 noviembre 2011 Joaquim Rocha <jrocha@igalia.com> http://www.joaquimrocha.com
    • ¿Qué es?"Django is a highlevel Python Web frameworkthat encourages rapid development andclean, pragmatic design."(de la página oficial de Django)
    • ¿Qué es?Proyecto interno de Lawrence Journal-World en 2003Debería ayudar a los periodistas con sus plazos cortosNo debería molestar a los periodistasLLeva el nombre del guitarrista Django Reinhardt
    • El frameworkObject-Relational Mapper (ORM)Interfaz de Admin automáticaDiseño de URLs elegantePoderoso sistema de plantillasi18n
    • Gran comunidadDjango tiene una gran comunidad y una extensa listade apps DjangoBuscalas en http://code.google.com,http://github.com o http://djangopackages.comOtras páginas web interesantes:Django Sites: http://www.djangosites.orgDjango People: http://www.djangopeople.orgDjango Community:https://www.djangoproject.com/community
    • Poner proyectos en producciónmod_wsgiFastCGImod_python...
    • Backend de BDSoportados oficialmente:PostreSQLMySQLSQLiteOracle
    • Usando a Django
    • InstalaciónTan simple como bajar el archivo o clonar el repositorio:http://djangoproject.com/downloadDespués:# python setup.py installO entonces:# easy_install install
    • Desarrollo
    • Creación de un proyecto$ django-admin.py startproject ProjectProject/ __init__.py manage.py settings.py urls.py
    • Executar de un proyecto$ ./manage.py runserver... y abre en tu navegador: localhost:8000
    • DesarrolloLos proyectos de Django tienen aplicacions (Apps)Las Apps son los componentes de los proyectos
    • Creación de una aplicación$ ./manage.py startapp my_appmy_app/ __init__.py models.py tests.py views.py
    • Construir la base de datos$ ./manage.py syncdb
    • Configuración de un proyectoConfiguración sencilla en el archivo settings.py
    • DesarrolloDjango sigue el patrón de diseño MTVModel-Template-View
    • ModelosLos modelos son classes que representan objetosen la base de datos¡Y no tendrás que tocar en SQL jamás!
    • Modelosclass Post(models.Model): title = models.CharField(max_length = 500) content = models.TextField() date = models.DateTimeField(auto_now = True) ...
    • VistasLas vistas son funciones que normalmenteprocesan modelos e renderizan HTML¡Es donde pasa la magia!¿Cómo obtener todos los posts desde hace 5 días y ordenarlospor fecha descendente?
    • Vistasimport datetimedef 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})
    • Vistas GenericasSon vistas todavía más rápidas de usar, paratareas comunes como listar o enseñar objetos.from django.views.generic import DetailView, ListViewurlpatterns = 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
    • Templates¡Prevendrán que te repitas!Y los designers no tendrán que tocar el código.
    • <html> <head> <title>{% block title %}{% endblock %}</title> </head> <body> {% block content %}{% endblock %} </body></html>
    • {% extends "base.html" %}{% block title %}Homepage{% endblock %}{% block content %} <h3>This will be some main content</h3> {% for post in posts %} <h4>{{ post.title }} on {{ post.date|date:"B d, Y"|upper }}<h4> <p>{{ post.content }}</p> {% endfor %} {% url project.some_app.views.some_view some arguments %}{% endblock %}
    • URLsEn Django, los URLs ¡son parte del diseño!urls.py usa expresiones regulares para mapear URLs con vistas
    • URLsurlpatterns = patterns(Project.some_app.views, (r^$, index), (r^posts/(?P<r_id>d+)/$, view_latest_posts), (r^create/$, create), url(r^view/post/(?P<p_id>d+)/$, view, name = view_post),)
    • FormulariosSon clases que representan un formulario HTMLDejan que se pueda facilmente configurar lostipos esperados de inputs, mensages de error,etiquetas, etc.
    • Formulariosclass CreatePost(forms.Form): title = forms.CharField(label = "Post Title", max_length = 500, widget = forms.TextInput(attrs={ class: big_entry })) content = forms.CharField() tags = forms.CharField(required = False)
    • Formulariosdef 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, })
    • Formularios<form action="/create/" method="POST"> {{ form.as_p }} <input type="submit" value="Create"/></form>
    • Formularios para modelsSon formularios que se crean automaticamente apartir de modelos, con tan solo:from django.forms import ModelFormclass PostForm(models.ModelForm): class Meta: model = Post
    • Proximos pasos
    • Hosts para DjangoUna extensa lista se encuentra en.http://code.djangoproject.com/wiki/DjangoFriendlyWebHostsLos 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/
    • AyudaDocumentación Django:https://docs.djangoproject.comCheat sheet:http://www.revsys.com/django/cheatsheet/Algunos libros:The Django Book: http://www.djangobook.com/Learning Website Development with Django, PacktPractical Django Projects, ApressPro Django, Apress