Taller de Django        Betabeers     Antonio Melé y Miguel Araujo01
Tests y Docs02
tests.pyclass BetabeersViewsTest(TestCase):  fixtures = [initial-data.json]  def setUp(self):     self.client = Client()  ...
Ecosistema04
pip y PyPi•   PyPi (The Python Package Index): repositorio de software de Python•   https://github.com/pypa/pip: pip es el...
Virtual Environments (venvs)•   http://www.virtualenv.org/en/latest/index.html•   https://github.com/pypa/virtualenv•   vi...
Virtual Environments (venvs)•   ¿Una forma fácil de instalarlo todo?•   curl -s https://raw.github.com/brainsik/virtualenv...
Django apps08
django-debug-toolbar (DjDT)•   https://github.com/django-debug-toolbar/django-debug-toolbar•   Barra de debugging de aplic...
10
Pinax•   Plataforma de desarrollo extremo de aplicaciones web.•   Numerosas Django apps reutilizables integradas y manejab...
django-extensions•   https://github.com/django-extensions/django-extensions•   Amplia la lista de comandos disponibles•   ...
13
django-extensions•   ./manage.py shell_plus•   ./manage.py dumpscript    14
django-social-auth•   https://github.com/omab/django-social-auth•   Open Authentication login: Twitter, Facebook, Google.....
Plantilla<ul> <li><a href="{% url socialauth_begin facebook %}">Facebook</a></li> <li><a href="{% url socialauth_begin twi...
django_compressor•   https://github.com/jezdez/django_compressor•   Django Compressor combina y comprime linked e inline J...
Plantilla{% load compress %}{% compress js %}<script src="/static/js/one.js" type="text/javascript" charset="utf-8"></scri...
django-celery•   https://github.com/ask/django-celery•   Cola de tareas asíncronas•   Tiempo Real o planificada•   RabbitM...
django-sentry•   https://github.com/dcramer/django-sentry•   Agregador de logs en tiempo real•   Raven Servicio tecnológic...
21
django-uni-form•   https://github.com/pydanny/django-uni-form•   Layouts programáticos reutilizables construidos por compo...
class MyForm(forms.Form):       form_field_1 = forms.CharField(...)       def __init__(self, *arg, **kwargs):         self...
Plantilla     {% load uni_form_tags %}     {% uni_form my_form my_form.helper %}24
django-floppyforms•   https://github.com/brutasse/django-floppyforms•   Remplaza los widgets de Django por HTML5 widgets.•...
django-cache-machine•   https://github.com/jbalogh/django-cache-machine•   Cacheado/Invalidación autómatico de los modelos...
models.py     from django.db import models     import caching.base     class Zomg(caching.base.CachingMixin, models.Model)...
django-secure•   https://github.com/carljm/django-secure•   Cumprueba nuestros settings para evitar que hagamos cosas estu...
django-devserver•   https://github.com/dcramer/django-devserver•   Reemplazo plug and play del servidor de desarrollo de D...
django-dajax•   https://github.com/jorgebastida/django-dajax•   http://dajaxproject.com/•   Forma fácil y potente de utili...
views.pyfrom dajax.core.Dajax import Dajaxdef assign_test(request):     dajax = Dajax()     dajax.assign(#block01 li, inne...
Haystack•   https://github.com/toastdriven/django-haystack•   http://toastdriven.com/•   La mejor forma de añadir un motor...
search_indexes.py     class NoteIndex(SearchIndex):       text = CharField(document=True, use_template=True)       author ...
Plantilla     {{ object.title }}     {{ object.user.get_full_name }}     {{ object.body }}34
django-reversion•   https://github.com/etianen/django-reversion•   Extensión que añade funcionalidad de control de version...
South•   https://bitbucket.org/andrewgodwin/south/overview•   http://south.aeracode.org/•   Migraciones de bases de datos ...
South•   ./manage.py schemamigration my_app --initial•   ./manage.py migrate my_app•   ./manage.py migrate schemamigration...
django-registration•   https://github.com/nathanborror/django-registration•   Fork del proyecto. Django app con probableme...
django-tastypie•   https://github.com/toastdriven/django-tastypie•   Genera deliciosas APIs para proyectos de Django.•   M...
my_app/api.py     from tastypie.resources import ModelResource     from myapp.models import Entry     class EntryResource(...
urls.py     from myapp.api import EntryResource     entry_resource = EntryResource()     urlpatterns = patterns(,         ...
django-tastypie•   httli://127.0.0.1:8000/api/entry/?format=json•   httli://127.0.0.1:8000/api/entry/1/?format=json•   htt...
Upcoming SlideShare
Loading in...5
×

Taller de Django betabeers

927

Published on

0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
927
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
22
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

Taller de Django betabeers

  1. 1. Taller de Django Betabeers Antonio Melé y Miguel Araujo01
  2. 2. Tests y Docs02
  3. 3. tests.pyclass 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)03 self.assertTrue(Note.objects.filter(title=Betabeers Test note).exists())
  4. 4. Ecosistema04
  5. 5. 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
  6. 6. Virtual Environments (venvs)• http://www.virtualenv.org/en/latest/index.html• https://github.com/pypa/virtualenv• virtualenvwrapper• virtualenv-burrito• mkvirtualenv betabeers• workon betabeers 06
  7. 7. 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
  8. 8. Django apps08
  9. 9. 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
  10. 10. 10
  11. 11. Pinax• Plataforma de desarrollo extremo de aplicaciones web.• Numerosas Django apps reutilizables integradas y manejables fácilmente. 11
  12. 12. 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
  13. 13. 13
  14. 14. django-extensions• ./manage.py shell_plus• ./manage.py dumpscript 14
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. 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
  19. 19. django-celery• https://github.com/ask/django-celery• Cola de tareas asíncronas• Tiempo Real o planificada• RabbitMQ / Redis 19
  20. 20. django-sentry• https://github.com/dcramer/django-sentry• Agregador de logs en tiempo real• Raven Servicio tecnológicamente agnóstico 20
  21. 21. 21
  22. 22. django-uni-form• https://github.com/pydanny/django-uni-form• Layouts programáticos reutilizables construidos por componentes.• La mejor forma de tener DRY forms en Django. 22
  23. 23. 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) )23 ) super(MyForm, self).__init__(*args, **kwargs)
  24. 24. Plantilla {% load uni_form_tags %} {% uni_form my_form my_form.helper %}24
  25. 25. 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
  26. 26. 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
  27. 27. models.py from django.db import models import caching.base class Zomg(caching.base.CachingMixin, models.Model): val = models.IntegerField() objects = caching.base.CachingManager()27
  28. 28. 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
  29. 29. 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
  30. 30. 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
  31. 31. views.pyfrom dajax.core.Dajax import Dajaxdef 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
  32. 32. 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
  33. 33. 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())33 site.register(Note, NoteIndex)
  34. 34. Plantilla {{ object.title }} {{ object.user.get_full_name }} {{ object.body }}34
  35. 35. 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
  36. 36. 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
  37. 37. 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
  38. 38. 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
  39. 39. 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
  40. 40. my_app/api.py from tastypie.resources import ModelResource from myapp.models import Entry class EntryResource(ModelResource): class Meta: queryset = Entry.objects.all()40
  41. 41. urls.py from myapp.api import EntryResource entry_resource = EntryResource() urlpatterns = patterns(, (r^api/, include(entry_resource.urls)), )41
  42. 42. django-tastypie• httli://127.0.0.1:8000/api/entry/?format=json• httli://127.0.0.1:8000/api/entry/1/?format=json• httli://127.0.0.1:8000/api/entry/schema/?format=json• httli://127.0.0.1:8000/api/entry/set/1;3/?format=json 42
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×