• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Taller de Django betabeers
 

Taller de Django betabeers

on

  • 1,378 views

 

Statistics

Views

Total Views
1,378
Views on SlideShare
1,345
Embed Views
33

Actions

Likes
8
Downloads
16
Comments
0

2 Embeds 33

http://betabeers.com 20
http://harajuku-tech.org 13

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

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

    Taller de Django betabeers Taller de Django betabeers Presentation Transcript

    • 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() 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())
    • Ecosistema04
    • 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
    • Virtual Environments (venvs)• http://www.virtualenv.org/en/latest/index.html• https://github.com/pypa/virtualenv• virtualenvwrapper• virtualenv-burrito• mkvirtualenv betabeers• workon betabeers 06
    • 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
    • Django apps08
    • 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
    • Pinax• Plataforma de desarrollo extremo de aplicaciones web.• Numerosas Django apps reutilizables integradas y manejables fácilmente. 11
    • 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
    • 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... y muchos más• La mejor alternativa. NO confundir con django-socialauth• Muy configurable y customizable 15
    • 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
    • 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
    • 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
    • django-celery• https://github.com/ask/django-celery• Cola de tareas asíncronas• Tiempo Real o planificada• RabbitMQ / Redis 19
    • django-sentry• https://github.com/dcramer/django-sentry• Agregador de logs en tiempo real• Raven Servicio tecnológicamente agnóstico 20
    • 21
    • 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
    • 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)
    • 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.• Widgets basados en plantillas.• Añade widgets y algún campo nuevo.• import floppyforms as forms 25
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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)
    • 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 versiones a los modelos• Recuperar modelos borrados• Histórico de datos con capacidad de retroceso en el tiempo• API a bajo nivel 35
    • 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
    • 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
    • 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
    • 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
    • my_app/api.py from tastypie.resources import ModelResource from myapp.models import Entry class EntryResource(ModelResource): class Meta: queryset = Entry.objects.all()40
    • urls.py from myapp.api import EntryResource entry_resource = EntryResource() urlpatterns = patterns(, (r^api/, include(entry_resource.urls)), )41
    • 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