Your SlideShare is downloading. ×
Novidades do Django 1.2 e o que vem por ai
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Novidades do Django 1.2 e o que vem por ai

933

Published on

Palestra apresentada no Fórum Internacional de Software Livre em 2010

Palestra apresentada no Fórum Internacional de Software Livre em 2010

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
933
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Novidades do Django 1.2 e o que vem por ai Marcos Daniel Petry @petry
  • 2. Petr y?
    • Marcos Daniel Petry
    • 3. Bacherel em Ciências da Computação
    • 4. Desenvolvedor Python/Django na UCS
    • 5. Trabalha com Python a 5 ou 6 anos
    • 6. Já programei em outras cois... linguagens
    • 7. Já usei outros frameworks
    • 8. Vice-presidente da Associação Python Brasil
  • 9. Sobre
    • Versão 1.2 em 17 de maio de 2010
      • Versão 1.2.1 dia 21
    • Não há mais suporte ao Python 2.3
  • 10. Novidades?
    • Suporte a várias conexões com Bancos de Dados
    • 11. Mensagens
    • 12. Consultas SQL Customizadas mas fáceis
    • 13. Validação de models
    • 14. Proteção Cross-Site obrigatória
    • 15. Flexibilidade nas permissões
    • 16. ...
  • 17. Suporte a Múltiplos BDs
  • 18. Suporte a Múltiplos BDs Django < 1.2 DATABASES_NAME = 'app_data' DATABASE_ENGINE = 'postgresql_psycopg2' DATABASE_USER = 'postgres_user' ATABASE_PASSWORD = 's3krit'
  • 19. Suporte a Múltiplos BDs DATABASES = { 'default': { 'NAME': 'app_data', 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'USER': 'postgres_user', 'PASSWORD': 's3krit' }, 'users': { 'NAME': 'user_data', 'ENGINE': 'django.db.backends.mysql', 'USER': 'mysql_user', 'PASSWORD': 'priv4te' } } Django >= 1.2
  • 20. Suporte a Múltiplos BDs Django >= 1.2
    • Novo Parametro/metodo: using
    >>> # This will run on the 'default' database. >>> Author.objects.all() >>> # So will this. >>> Author.objects.using('default').all() >>> # This will run on the 'other' database. >>> Author.objects.using('other').all() >>> User.objects.filter(username__startswith=&quot;admin&quot;).using(&quot;users&quot;) >>> my_object.save(using='legacy_users')
  • 21. Mensagens
  • 22. Mensagens Django < 1.2...
    • Era necessário utilizar a app de autenticação
      • Sem muitos recursos =(
    • Criar um Middlware =((
  • 23. Mensagens Django >= 1.2
    • Mensagens para todos!
    • 24. Suporte a tipos e níveis de mensagens
    • 25. As mensagens poder guardadas em diversos meios (BD, cookies, sessões...)
  • 26. Mensagens Code, code, code... from django.contrib import messages messages.debug(request, '%s SQL statements were executed.' % count) messages.info(request, 'Three credits remain in your account.') messages.success(request, 'Profile details updated.') messages.warning(request, 'Your account expires in three days.') messages.error(request, 'Document deleted.') {% if messages %} <ul class=&quot;messages&quot;> {% for message in messages %} <li{% if message.tags %} class=&quot;{{ message.tags }}&quot;{% endif %}>{{ message }}</li> {% endfor %} </ul> {% endif %}
  • 27. Consultas SQL Customizadas Django < 1.2 from django.db import connection from library.models import Author cursor = connection.cursor() query = &quot;SELECT * FROM library_author&quot; cursor.execute(query) results = cursor.fetchall() authors = [] for result in results: author = Author(*result) authors.append(author)
  • 28. Consultas SQL Customizadas Django >= 1.2 from library.models import Author query = &quot;SELECT * FROM library_author&quot; authors = Author.objects.raw(query) >>> authors = Author.objects.raw(&quot;SELECT *, age(birth_date) as age FROM library_authors&quot;) >>> for author in authors: ... print &quot;%s is %s.&quot; % (author.first_name, author.age) John is 37. Jane is 42. ...
  • 29. Consultas SQL Customizadas
      Use somente se necessário!!!
  • 30. Validação de dados
  • 31. Validação de dados Django < 1.2
    • Somente formulários
    • 32. Os modelos são validados através do ModelForms ( que tambem são modelos =P )
  • 33. Validação de dados Django >= 1.2
    • A validação tanto de models quanto forms
    • 34. Reutilizável
  • 35. Validação de dados from django.core.exceptions import ValidationError from django.db import models def validate_even(value): if value % 2 != 0: raise ValidationError(u'%s is not an even number' % value) class MyModel(models.Model): even_field = models.IntegerField(validators=[validate_even]) Code, code, code...
  • 36. Cross-Site Request Forgery
  • 37. Cross-Site Request Forgery
    • Era uma proteção opcional, agora, é obrigatória
    • 38. Estava no contrib, agora, faz parte do core do Django
  • 39. Permissões + Flexiveis
  • 40. Permissões + Flexiveis AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend', ' myperm .backend.ObjectPermBackend', ) from django.conf import settings from myperm.models import ObjectPermission class ObjectPermBackend(object): supports_object_permissions = True supports_anonymous_user = True def authenticate(self, username, password): ... def has_perm(self, user_obj, perm, obj=None): ...
  • 41. Admin com JQuery
  • 42. Admin com Jquery
  • 43. Templates
  • 45. Templates Cache TEMPLATE_LOADERS = ( ('django.template.loaders.cached.Loader', ( 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', )), )
  • 46. Templates Django < 1.2 {% ifequal somevar &quot;x&quot; %} This appears if variable somevar equals the string &quot;x&quot; {% endifequal %} {% ifnotqual somevar &quot;x&quot; %} This appears if variable somevar does not equal the string &quot;x&quot;, or if somevar is not found in the context {% endifnotequal %}
  • 47. Templates Django >= 1.2 {% if somevar == &quot;x&quot; %} This appears if variable somevar equals the string &quot;x&quot; {% endif %} {% if somevar != &quot;x&quot; %} This appears if variable somevar does not equal the string &quot;x&quot;, or if somevar is not found in the context {% endif %} {% if you.friends.count > 5 %}You're popular!{% endif %} {% if country != &quot;BR&quot; %}Come and visit Brazil!{% endif %} {% if staff or author and not expired %} <a href=&quot;{{ edit_url }}&quot;>Edit this</a> {% endif %}
  • 48. E muito mais!
    • Debug colorido
    • 49. Campo read-only no admin
    • 50. Feeds mais flexiveis
    • 51. Backend de email configurável
    • 52. Melhorias na I18n e L10n
  • 53. E o que vem por ai?
  • 54. Duvidas? [email_address] @petry blog.mdpetry.net http://slideshare.net/mdpetry

×