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

Taller de Django en español

Taller de Django en español

Taller de introducción a Django en español presentado por Antonio Melé (@zenxone) y Miguel Araujo (@maraujop) en el Betabeers de Octubre de 2011. Vídeo de la presentación.

En la segunda parte se introduce el ecosistema de aplicaciones de Django, sus principios y algunos ejemplos de uso.

Miguel Araujo

October 19, 2011
Tweet

More Decks by Miguel Araujo

Other Decks in Programming

Transcript

  1. tests.py class BetabeersViewsTest(TestCase): fixtures = ['initial-data.json'] def setUp(self): self.client =

    Client() self.client.login(username="rebeca", password="rebeca") def test_login_200(self): context = { 'title': 'Betabeers Test note', 'text': 'I like beers more than beta', } response = self.client.post(reverse('post_note'), context) self.assertTrue(Note.objects.filter(title='Betabeers Test note').exists()) 03
  2. pip y PyPi PyPi (The Python Package Index): repositorio de

    software de Python https://github.com/pypa/pip: pip es el instalador pip install django • • • 05
  3. Virtual Environments (venvs) ¿Una forma fácil de instalarlo todo? curl

    -s https://raw.github.com/brainsik/virtualenv- burrito/master/virtualenv-burrito.sh | bash • • 07
  4. django-debug-toolbar (DjDT) https://github.com/django-debug-toolbar/django-debug-toolbar Barra de debugging de aplicaciones Muestra información

    de una página: contexto disponible, sentencias SQL ejecutadas... Dispone de un sistema de plugins • • • • 09
  5. 10

  6. Pinax Plataforma de desarrollo extremo de aplicaciones web. Numerosas Django

    apps reutilizables integradas y manejables fácilmente. • • 11
  7. django-extensions https://github.com/django-extensions/django-extensions Amplia la lista de comandos disponibles Ayuda: python

    manage.py graph_models --help $ ./manage.py graph_models -a -g -o my_project.png • • • • 12
  8. 13

  9. django-social-auth https://github.com/omab/django-social-auth Open Authentication login: Twitter, Facebook, Google... y muchos

    más La mejor alternativa. NO confundir con django-socialauth Muy configurable y customizable • • • • 15
  10. Plantilla <ul> <li><a href="{% url socialauth_begin 'facebook' %}">Facebook</a></li> <li><a href="{%

    url socialauth_begin 'twitter' %}">Twitter</a></li> <li><a href="{% url socialauth_begin 'google' %}">Google</a></li> </ul> 16
  11. django_compressor https://github.com/jezdez/django_compressor Django Compressor combina y comprime linked e inline

    Javascript o CSS en las plantillas de Django en ficheros estáticos cacheables. python manage.py compress • • • 17
  12. Plantilla {% load compress %} {% compress js %} <script

    src="/static/js/one.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript" charset="utf-8">obj.value = "value";</script> {% endcompress %} Renderiza: <script type="text/javascript" src="/static/CACHE/js/3f33b9146e12.js" charset="utf-8"></script> 18
  13. 21

  14. class MyForm(forms.Form): form_field_1 = forms.CharField(...) def __init__(self, *arg, **kwargs): self.helper

    = FormHelper() self.helper.form_action = 'submit-survey' self.helper.layout = Layout( Div( 'form_field_2', 'form_field_3', ) ButtonHolder( Submit('save', 'Save', css_class='button white') ) ) super(MyForm, self).__init__(*args, **kwargs) 23
  15. django-floppyforms https://github.com/brutasse/django-floppyforms Remplaza los widgets de Django por HTML5 widgets.

    Widgets basados en plantillas. Añade widgets y algún campo nuevo. import floppyforms as forms • • • • • 25
  16. django-cache-machine https://github.com/jbalogh/django-cache-machine Cacheado/Invalidación autómatico de los modelos a través del

    ORM. Redefine el Django Memcached backend para cacheado infinito. Cuando un objeto cambia, es invalidado. Nuestros model managers deben heredar de CachingManager. • • • • • 26
  17. django-secure https://github.com/carljm/django-secure Cumprueba nuestros settings para evitar que hagamos cosas

    estupidas. python manage.py checksecure Middleware configurable que nos ayuda a mejorar la seguridad de nuestro site. • • • • 28
  18. django-devserver https://github.com/dcramer/django-devserver Reemplazo plug and play del servidor de desarrollo

    de Django. Incluye módulos para el profiling de consultas SQL, vistas, uso de memoria, etc. python manage.py runserver • • • • 29
  19. django-dajax https://github.com/jorgebastida/django-dajax http://dajaxproject.com/ Forma fácil y potente de utilizar AJAX

    en nuestro proyectos sin escribir casi nada de código JS Soporta jQuery, Dojo, Prototype y motools • • • • 30
  20. views.py from dajax.core.Dajax import Dajax def assign_test(request): dajax = Dajax()

    dajax.assign('#block01 li', 'innerHTML', 'Something else...') return dajax.json() Plantilla <div onclick="Dajaxice.app.assign_test(Dajax.process);">Click Here!</div> 31
  21. Haystack https://github.com/toastdriven/django-haystack http://toastdriven.com/ La mejor forma de añadir un motor

    de búsqueda a Django Arquitectura similar a los modelos ORM, pero orientado a búsqueda. Soporte de varios motores: Solr, Xapian, Whoosh Escribiendo SearchIndex en search_indexes.py • • • • • • 32
  22. search_indexes.py class NoteIndex(SearchIndex): text = CharField(document=True, use_template=True) author = CharField(model_attr='user')

    pub_date = DateTimeField(model_attr='pub_date') def index_queryset(self): """Used when the entire index for model is updated.""" return Note.objects.filter(pub_date__lte=datetime.datetime.now()) site.register(Note, NoteIndex) 33
  23. django-reversion https://github.com/etianen/django-reversion Extensión que añade funcionalidad de control de versiones

    a los modelos Recuperar modelos borrados Histórico de datos con capacidad de retroceso en el tiempo API a bajo nivel • • • • • 35
  24. South https://bitbucket.org/andrewgodwin/south/overview http://south.aeracode.org/ Migraciones de bases de datos relacionales sin

    volverse loco, de forma semiautomática Interesante opción para trabajo en equipo • • • • 36
  25. South ./manage.py schemamigration my_app --initial ./manage.py migrate my_app ./manage.py migrate

    schemamigration my_app --auto ./manage.py migrate my_app Metadatos en: tabla south_migrationhistory y directorio migrations • • • • • 37
  26. django-registration https://github.com/nathanborror/django-registration Fork del proyecto. Django app con probablemente record

    de forks. Sistema de registro de usuarios customizable en la aplicación Usar versión 0.8.0 alpha • • • • 38
  27. django-tastypie https://github.com/toastdriven/django-tastypie Genera deliciosas APIs para proyectos de Django. Mi

    favorita para hacer interfaces RESTful HTTP Tremendamente potente: autenticación, autorización, serializado, customizado... • • • • 39
  28. my_app/api.py from tastypie.resources import ModelResource from myapp.models import Entry class

    EntryResource(ModelResource): class Meta: queryset = Entry.objects.all() 40
  29. urls.py from myapp.api import EntryResource entry_resource = EntryResource() urlpatterns =

    patterns('', (r'^api/', include(entry_resource.urls)), ) 41