• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Novidades do Django 1.2 e o que vem por ai
 

Novidades do Django 1.2 e o que vem por ai

on

  • 1,339 views

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

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

Statistics

Views

Total Views
1,339
Views on SlideShare
1,338
Embed Views
1

Actions

Likes
0
Downloads
4
Comments
0

1 Embed 1

http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

CC Attribution 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

    Novidades do Django 1.2 e o que vem por ai Novidades do Django 1.2 e o que vem por ai Presentation Transcript

    • Novidades do Django 1.2 e o que vem por ai Marcos Daniel Petry @petry
    • Petr y?
      • Marcos Daniel Petry
      • Bacherel em Ciências da Computação
      • Desenvolvedor Python/Django na UCS
      • Trabalha com Python a 5 ou 6 anos
      • Já programei em outras cois... linguagens
      • Já usei outros frameworks
      • Vice-presidente da Associação Python Brasil
    • 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
    • Novidades?
      • Suporte a várias conexões com Bancos de Dados
      • Mensagens
      • Consultas SQL Customizadas mas fáceis
      • Validação de models
      • Proteção Cross-Site obrigatória
      • Flexibilidade nas permissões
      • ...
    • Suporte a Múltiplos BDs
    • Suporte a Múltiplos BDs Django < 1.2 DATABASES_NAME = 'app_data' DATABASE_ENGINE = 'postgresql_psycopg2' DATABASE_USER = 'postgres_user' ATABASE_PASSWORD = 's3krit'
    • 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
    • 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')
    • Mensagens
    • Mensagens Django < 1.2...
      • Era necessário utilizar a app de autenticação
        • Sem muitos recursos =(
      • Criar um Middlware =((
    • Mensagens Django >= 1.2
      • Mensagens para todos!
      • Suporte a tipos e níveis de mensagens
      • As mensagens poder guardadas em diversos meios (BD, cookies, sessões...)
    • 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 %}
    • 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)
    • 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. ...
    • Consultas SQL Customizadas
        Use somente se necessário!!!
    • Validação de dados
    • Validação de dados Django < 1.2
      • Somente formulários
      • Os modelos são validados através do ModelForms ( que tambem são modelos =P )
    • Validação de dados Django >= 1.2
      • A validação tanto de models quanto forms
      • Reutilizável
    • 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...
    • Cross-Site Request Forgery
    • Cross-Site Request Forgery
      • Era uma proteção opcional, agora, é obrigatória
      • Estava no contrib, agora, faz parte do core do Django
    • Permissões + Flexiveis
    • 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): ...
    • Admin com JQuery
    • Admin com Jquery
    • Templates
      • Cache
      • Comando IF
    • Templates Cache TEMPLATE_LOADERS = ( ('django.template.loaders.cached.Loader', ( 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', )), )
    • 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 %}
    • 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 %}
    • E muito mais!
      • Debug colorido
      • Campo read-only no admin
      • Feeds mais flexiveis
      • Backend de email configurável
      • Melhorias na I18n e L10n
    • E o que vem por ai?
    • Duvidas? [email_address] @petry blog.mdpetry.net http://slideshare.net/mdpetry