Django Brasil


Comunidade brasileira de Django


Comunidade

Esta página é atualizada a cada hora e agrega entradas dos blogs de brasileiros que escrevem sobre o Django.

Django, download e o problema no Internet Explorer 7

Publicado em 09/05/2008 às 12h17
Arthur Furlan feed

Há pouco tempo atrás eu postei aqui no blog como forçar o download de arquivos com Django. Na época eu havia testado o sistema em todos os navegadores que estavam ao meu alcance (Firefox, Iceweasel, Opera, Epiphany, IE6 e IE7) porém mesmo assim não precisou de muito tempo em ambiente de ...

Leia essa entrada em seu contexto original »

Forçando o download de arquivos com Django

Publicado em 09/05/2008 às 12h17
Arthur Furlan feed

Primeiro post pelo Planeta GNU/Linux Brasil. :) Essa semana precisei criar uma aplicação web que disponibilizasse alguns arquivos para download e então decidi fazer isso utilizando Python e Django. Uma parte da minha aplicação consistia em forçar o browser a abrir uma janela de download ao invés de exibir o arquivo (como ...

Leia essa entrada em seu contexto original »

Como utilizar várias versões do Django

Publicado em 06/05/2008 às 17h10
Andrews Medina feed

Uma dúvida de muitos programadores que começam a utilizar o Django é saber qual versão instalar.
A maior dúvida está na escolha de uma entra as três versões: 0.96.1, 0.97-pre (a versão de desenvolvimento) e o branch newforms-admin.
Muitos a primeira vista escolhem a versão 0.96.1 por ser uma versão estável e fechada. Mas eu acho isso um excesso de zelo.
Desde que a versão 0.96.1 foi lançada foi adicionado muita coisa na versão em desenvolvimento (0.97-pre), contendo assim muito mais funcionalidades importantes:

  • Unicode por padrão
  • Autoself
  • Newforms muito mais maduro e poderoso e a adição do ModelForms
  • TestClient
  • Herança de models e muito mais poder nas query's com a adição do branch queryset-refactor
  • Novos contribs
Como podem ver utilizar a versão em desenvolvimento pode trazer muitas vantagens.
Outro fator a se considerar é que tudo antes de entrar na versão em desenvolvimento é discutido, analizado e depois aceito, trazendo uma certa estabilidade.
Por outro lado temos ainda o branch do newforms-admin, que já está finalizado mais ainda não foi feito a junção dele com a versão em desenvolvimento.
Nesse branch o admin foi refeito utilizando o newforms e algumas filosofias do admin foram alteradas deixando muito mais fácil de customizar e modificar as views de um respectivo model no admin.
Como o newforms-admin tem tudo que a versão em desenvolvimento tem adicionando o novo admin, você pode me perguntar:
"Eu tenho projetos já pronto utilizando a versão em desenvolvimento do Django, gostaria de manter ela para os atuais projetos mais utilizar o branch do newforms-admin para os projetos futuros. É possível?"
A resposta é: Sim! Na verdade esse é o titulo desse post.
Existe um script em Python disponibilizado no djangosnippets.org que permite que de uma maneira simples você alterne entre as versão do Django de acordo com a sua necessidade. Esse script não faz nada mais do que adicionar a versão selecionada ao PYTHONPATH. E quando já existe alguma no PYTHONPATH ele a sobrescreve, ficando apenas a atual.
Para isso baixe a versão em desenvolvimento do Django:
svn co http://code.djangoproject.com/svn/django/trunk/ django-trunk
PS: não faça o link simbólico para o site-packages como é indicado na documentação, porque quem fará isso será o script que vamos utilizar.
Baixe também o branch do newforms-admin:
svn co http://code.djangoproject.com/svn/django/branches/newforms-admin/ newforms-admin
E salve o arquivo do script que faz a troca entre as versões que pode ser baixado aqui, como chdjango.py
A sua sintaxe é: python chdjango.py diretorio_do_django
Seguindo isso para adicionar a versão em desenvolvimento ao PYTHONPATH:
$sudo python chdjango.py django-trunk

E para remover a versão em desenvolvimento e adicionar o branch do newforms-admin ao PYTHONPATH:
$sudo python chdjango.py newforms-admin

Agora você pode utilizar várias versões do Django em seu computador de acordo com seu gosto!
Lembrando, se você começou um projeto em uma versão é recomendado que termine esse projeto nessa mesma versão.

Leia essa entrada em seu contexto original »

Code Review

Publicado em 04/05/2008 às 17h32
Walter Cruz feed

http://mail.python.org/pipermail/python-3000/2008-May/013408.html

Em novembro de 2006, Guido Van Rossum gravou um vídeo onde ele demonstrava o Mondrian, uma ferramenta para code review que ele estava desenvolvendo para o google. Porém, a ferramenta começou a ficar amarrada demais a parte proprietária da infraestrutura do google, o que tornou inviável seu lançamento como open source.

Porém, na lista Python-3000, ele anunciou uma ferramenta, inspirada no mondrian, mas com suporte a subversion, feita em Django e hospedada no google app engine.

Ele espera que o código fonte dessa aplicação seja disponibilizado em breve. A aplicação executando pode ser vista aqui: http://codereview.appspot.com/ e você pode ler o anúncio de GvR na lista Python-3000.

Mais em:

Leia essa entrada em seu contexto original »

PDF's das minhas palestras e treinamentos que fiz no FISL 9

Publicado em 26/04/2008 às 1h53
Andrews Medina feed


Já se passaram alguns dias que voltei do FISL e ainda não escrevi sobre o evento aqui no blog e nem postei o material das palestras que apresentei e do treinamento de Django que ministrei.
Ainda pretendo escrever sobre a minha aventura lá em Porto Alegre, mas para atender os milhares alguns pedidos, estou disponibilizando os arquivos em PDF relacionado às minhas 3 apresentações:
Google App Engine
Django para desenvolvimento web
7 novidades que virão com o Python3k
E do treinamento:
Desenvolvimento ágil com Django
Espero que gostem e façam bom uso.

Leia essa entrada em seu contexto original »

Lista de discussão da Django Brasil chega a 500 assinantes

Publicado em 25/04/2008 às 14h09
Andrews Medina feed

Hoje, 25 de abril de 2008, é um dia histórico para todos que participam da comunidade Django Brasil. A comunidade chega a marca de 500 assinantes da lista.

Vários fatores colaboraram para chegarmos até aqui:

- O Django ser um framework bacana, ágil e divertido de usar
- A participação cada vez mais ativa dos membros da lista
- O anúncio do Summer of Code
- A participação de membros da comunidade divulgando o Django em faculdades, congressos, em seus blogs e etc

Parabéns a todos que colaboraram e rumo aos 1000!

Leia essa entrada em seu contexto original »

Komodo Edit e Django

Publicado em 19/04/2008 às 20h00
Rafael C. de B. feed

Estive testando a ide free o Komodo Edit, é a versão free do Komodo IDE, ele possui auto-completar para Python e Django, até um tempo atrás eu usava Aptana mas o auto-completar que considero muito útil é precário no Aptana. Fiz um video[1] de 18min demonstrando o uso do Komodo e serve também para os que estão iniciando no django pois mostro no vídeo como criar um projeto e usar templates, o Komodo trata a linguagem de templates do ...

Leia essa entrada em seu contexto original »

Oportunidade para djanger em Itu

Publicado em 17/04/2008 às 17h00
Marinho Brandão feed

O Andre Henrique anunciou uma vaga para desenvolvedor Python, com desejável conhecimento de Django para Itu, interior paulista:

Empresa em fase inicial, a atuação da ALTAVIX Digital é voltada ao segmento de Tecnologia da Informação, com foco em sistemas de operação e controle da distribuição de imagem e vídeo. Localiza-se no centro da cidade de Itu, interior de SP.

  • Sobre a vaga:

System Message: WARNING/2 (<string>, line 6)

Bullet list ends without a blank line; unexpected unindent.
  • Desenvolvimento de sistema web para comunicação digital.
  • Conhecimentos desejáveis: Linux, SQL, Django, e Javascript.
  • Contratação por prestação de serviço, mas com o objetivo de integração à equipe fixa.
  • Sobre o candidato:

System Message: WARNING/2 (<string>, line 11)

Bullet list ends without a blank line; unexpected unindent.

O perfil que buscamos para os integrantes da nossa equipe é aquele que reúna características para o constante crescimento de competências, entre as quais destacamos: iniciativa, dinamismo, estudo, inovação e comprometimento.

Encaminhar currículo para rh_cv em altavix ponto com

Leia essa entrada em seu contexto original »

Oportunidade para djanger em Sorocaba

Publicado em 17/04/2008 às 17h00
Marinho Brandão feed

O Ari Caldeira anunciou a seguinte oportunidade de trabalho para Sorocaba, interior paulista:

Olá!

Estamos procurando por um programador com conhecimentos em Python e Django, para trabalho em Sorocaba, interior de São Paulo.

Por favor, entrem em contato particular pelo emeio ari@tauga.com.br.

Obrigado!

Ari Caldeira Ta?ga Educação e Tecnologia - www.Tauga.com.br Fone/Fax: +55 (15) 3388-7305 Emeio: ari arroba tauga.com.br

Leia essa entrada em seu contexto original »

FISL - Não será dessa vez!

Publicado em 17/04/2008 às 8h41
Christiano Anderson feed

É com grande pesar que anuncio a minha ausência ao FISL desse ano. Aguardei muito por esse evento sendo que até ganhei um espaço na grade para palestrar sobre um assunto que adoro e estou inteiramente dedicado a mais de um ano em estudar e fazer aplicações práticas em vários projetos: o Django! Por motivos profissionais, [...]

Leia essa entrada em seu contexto original »

FISL lá vou eu!

Publicado em 16/04/2008 às 3h36
Andrews Medina feed


Nos dias 17, 18 e 19 de Abril ocorrerá em Porto Alegre o maior evento de Software Livre do país: o Festival Internacional de Software Livre.

E como é de se prever, a comunidade Python Brasil estará lá, contando comigo. Esse ano terá pela primeira vez uma trilha de Python no evento. E muitas coisas, como o lançamento do Google Engine App , o trabalho que a Associação Python está fazendo, estão levando a muitos crerem que este é o ano do Python.

Eu participarei do evento ministrando um treinamento de Django. Mas, esse treinamento será diferente do que eu ministrei na PyConBrasil 3. Ele será focado em iniciantes, mas mostrarei um pouco de várias ferramentas do Django (admin, generic views, newforms) na prática, criando uma aplicação. Ainda há vagas para o treinamento, para se inscrever basta adicionar o nome na página do wiki do Python Brasil referente aos treinamentos do FISL. E além do evento participarei de uma palestra sobre Django, falando tudo sobre o Framework.

Como não moro muito perto do evento (Rondonópolis - MT), a minha aventura começará nesta madrugada das 4 ás 6 da manhã quando pegarei uma van que me levará até ao aeroporto na Capital. Provavelmente passarei lá a manhã, e uma parte da tarde, quando pegarei o avião (16h) que irá até Brasília e depois o avião partirá de Brasíla até Porto Alegre (22h). Se tudo correr bem até aí, é só pegar um táxi até o Collins hotel python caverna.

Para os que não vão, eu tentarei postar aqui e no twitter tudo o que estiver acontecendo lá no FISL. E para os que vão: nos vemos lá.

Leia essa entrada em seu contexto original »

Pylons no Google App Engine

Publicado em 14/04/2008 às 14h34
Walter Cruz feed

http://code.google.com/p/appengine-monkey/wiki/Pylons

Ian Bicking e outros trabalharam para tornar o Pylons disponível no Google App Engine, e já é possível usá-lo!

No seu post, Ian Bicking dá uma descrição detalhada do trabalho necessário. Como eu também tentei executar o Pylons, sei um pouco da dificuldade que foi.

Segundo o google:

You can upload other third-party libraries with your application, as long as they are implemented in pure Python and do not require any unsupported standard library modules.

Parece simples, mas muitas coisas foram restritas e embora seja fácil usar alguma biblioteca implementada em python puro, as coisas se tornam bem complicadas quando se requer alguma extensão em C, como é o caso de muitas bibliotecas populares.

Mesmo um framework como o Django, que é tido como oficialmente suportado, tem limitações. Por exemplo, o admin, que um dos grandes trunfos do Django, depende dos models, que são parecidos, mas não iguais. Logo o admin, está de fora.

Além disso, tem o salto que é a utilização de um banco de dados não relacional (embora você possa fazer algumas consultas usando a sintaxe SELECT, usando o GQL). Muitas perguntas no grupo de discussão se referem a coisas comuns para o SQL, como COUNT e JOINs.

Outra limitação que é um pouco estúpida: o limite para o número de arquivos enviados é fixado em 1000.

Apesar disso, estou apenas esperando minha conta ser liberada para brincar lá! Enquanto isso, confira a lista de requisições e problemas.

Leia essa entrada em seu contexto original »

Como o Google Engine App afetará a comunidade Python

Publicado em 12/04/2008 às 16h22
Andrews Medina feed


Foi lançado nessa pelo Google, um novo serviço chamado Google App Engine. Ele consiste em um serviço de host para aplicações. Atualmente, fazer o deploy de aplicações "ágeis" não é algo muito simples. E o Google Engine App consiste em facilitar esse deploy deixando o programador livre para focar seus esforços na programação.

Como o Python está envolvido nisso?

O que surpreendeu muitos nesse lançamento ( além do lançamento em si ), é que o Google Engine App foi feito em Python, em algumas coisas ele é baseado no Django e suporta apenas aplicações em Python.

Todas as pessoas que programam em Python sabem que o Google usa o Python. Mas, até então não tinhámos como provar isso. Com o Google Engine App, o Google não apenas mostrou que usa Python, mas que também aposta no uso de Python para Web e ainda incentiva a outros usarem.

E a comunidade?

As dez mil contas iniciais do serviço foram preenchidas e garanto que teve milhares de programadores que tentaram ter uma conta e ainda não conseguiram ( eu sou um deles ). E muitos desses que estão interessados no Engine App ( com ou sem conta ) devem ter olhado ao menos um tutorial, um exemplo ou um screencast mostrando como o SDK funciona. E se essa pessoa não conhecia Python, verá como a linguagem é simples e poderosa.

Com todas esse marketing focado no Python começaremos a ver mais e mais programadores tentando aprender Python.

Seria legal se a comunidade ( centro de treinamentos, escritores, blogueiros, etc ) começarem a preparar-se com materiais para iniciantes.

A APyB desde a última PyConBrasil tem trabalhado para atender aos iniciantes e interessados, até parece que já prevíamos que uma onda dessas iria aparecer.

Leia essa entrada em seu contexto original »

Versão 0.6 do Yadsel com suporte a Django

Publicado em 12/04/2008 às 9h00
Marinho Brandão feed

Depois de um longo período apenas mantendo a estabilidade da versão atual, tirei ontem o dia para concluir os ajustes necessários para a versão 0.6 do Yadsel, com foco quase que exclusivo em projetos construídos com Django.

Ocorre que antes disso, o Yadsel trabalhava somente com versões de forma linear, ou seja: uma classe, uma versão.

Isso permaneceu até a versão 0.4, quando implementei o recurso de Extensible Versions (versões extensíveis) e Partial Versions (versões parciais). Essa versão inaugurou a idéia de poder ter várias classes em uma só versão. Melhorou na organização dos arquivos de versões e possibilitou trabalhar várias aplicações compartilhando uma mesma versão.

Mas ainda assim, outro recurso era necessário para o uso cotidiano no Django. No Django, as aplicações são independentes umas das outras, e ainda assim, podem haver eventuais dependências. Isso cria a necessidade de suporte a múltiplas versões em um mesmo projeto, ou seja: cada aplicação, uma versão. Para isso foi necessário implementar o Version Space.

Version Space

O Version Space é um recurso novo do Yadsel que torna possível que cada "espaço" no controle de versões possua sua própria versão, histórico e log. No caso do Django, o version space traduz-se pelo nome da aplicação, em outros aplicações, o desenvolvedor pode implementar como bem quiser.

Em outras palavras: eu posso manter uma aplicação de newsletter em diversos projetos com evolução de versões independentes do restante, incluindo toda a parafernália de DDL e DML que o Yadsel suporta: Tabelas, Domínios, Triggers, Procedures, Views, etc.

Yadsel no Admin

No embalo do Version Space veio o suporte ao Admin. É simples, ao instalar a aplicação 'yadsel.drivers.django_app' em seu INSTALLED_APPS, seu Admin passará a exibir duas seções para visualizar logs e históricos da evolução do banco.

Yadsel pelo manage.py

O Yadsel implementa um novo comando ao manage.py: yadseltool. A lógica de funcionamento é a mesma da yadseltool independente, porém seguindo a sintaxe de comandos baseados aplicações do manage.py:

$ python manage.py help yadseltool
Usage: manage.py yadseltool [options] [appname ...]

Executes Yadsel database version control for the given app name(s).

Options:
  --settings=SETTINGS   The Python path to a settings module, e.g.
                        "myproject.settings.main". If this isn't provided, the
                        DJANGO_SETTINGS_MODULE environment variable will be
                        used.
  --pythonpath=PYTHONPATH
                        A directory to add to the Python path, e.g.
                        "/home/djangoprojects/myproject".
  --traceback           Print traceback on exception
  --action=ACTION       Action of evolution; up=upgrade, down=downgrade
  --from=FROM
  --to=TO
  --mode=MODE           Mode of output; hidden=messages are hidden, steps=step
                        by step, interactive=confirms actions, output=only
                        prints to output
  --test=TEST           Set test mode
  --history=HISTORY     Write history of versions
  --silent=SILENT       Keeps exception messages
  --log=LOG             Write a log of changes
  --version             show program's version number and exit
  -h, --help            show this help message and exit

Exemplo de chamada do yadseltool

$ python manage.py yadseltool minha_aplicacao

Mas como afinal utilizar o Yadsel em meu projeto Django?

Bom, primeiro é necessário baixar a versão 0.6 do Yadsel em sua máquina

http://yadsel.googlecode.com/files/yadsel-0.6-with-django-support.tar.gz

Feito o download, instale o Yadsel numa versão 2.4 ou superior do Python

$ python setup.py install

Em seu projeto, acrescente a seguinte aplicação à setting INSTALLED_APPS do arquivo settings.py

'yadsel.drivers.django_app'

Rode o syndcb

$ python manage.py syncdb

Serão criadas as duas tabelas necessárias para o histórico e log do Yadsel. Entenda que 'histórico' trata-se do controle das versões, é ele que sabe se sua aplicação está na versão X ou Y. O 'log' trata-se de cada comando SQL que é gerado e executado, assim como suas respectivas eventuais mensagens de erro.

Crie a seguinte estrutura de pastas em uma de suas aplicações:

minha_aplicacao/
minha_aplicacao/yadsel_versions/
minha_aplicacao/yadsel_versions/__init__.py
minha_aplicacao/yadsel_versions/versao1.py
minha_aplicacao/yadsel_versions/versao2.py
minha_aplicacao/yadsel_versions/versaoN.py

o arquivo __init__.py deve conter ou importar as classes de versões, que podem ser estruturadas como bem quiser, seja em módulos ou em pacotes.

O conteúdo provável do arquivo __init__.py será este:

from versao1 import *

E o do arquivo versao1.py (ou qualquer outro que contenha classes de versões) será provavelmente este:

from yadsel.core import *

class Version1(Version):
    version_number = 1

    def up(self):
        pass

    def down(self):
        pass

ou como este exemplo:

from yadsel.core import *

class MinhaVersao1(Version):
    version_number = 1

    def up(self):
        CreateTable('minha_tabela_nova',
            id = Integer(primary=True)
            name = Varchar(50, required=True),
        ).append_to(self)

        AlterTable('states',
            Add('percent', Decimal(15, 5, default=0)),
        ).append_to(self)

        ExecuteSQL("""
            Create or Alter Procedure sp_teste...
        """).append_to(self)

    def down(self):
        ExecuteSQL("""
            Drop Procedure sp_teste
        """).append_to(self)

        AlterTable('states',
            DropColumn('percent'),
        ).append_to(self)

        DropTable('minha_tabela_nova').append_to(self)

A minha sugestão é que se use o Yadsel no Django somente para manter a evolução, não para criar tabelas em si. Isso porque o Django o já cria as tabelas muito bem. O que ele não faz é o resto :D

Leia essa entrada em seu contexto original »

Ajax ManyToManyField Widget

Publicado em 11/04/2008 às 10h01
Marinho Brandão feed

Os campos ManyToManyField são uma beleza: permitem que se selecione diversos registros extrangeiros para um único campo, possibilitando campos clássicos onde normalmente seria necessária uma nova classe com tratamento e manutenção particulares.

No entanto, esse tipo de campo traz um problema consigo: é que o SelectMultiple [1] carrega todas as opções disponíveis para o usuário, o que no caso de grande quantidade de registros, cria uma imensa estrutura em HTML capaz de travar até o mais rápido dos navegadores.

O widget FilteredSelectMultiple [2] oferece alguma organização para isso, mas ainda assim, a carga é a mesma ou ainda maior.

O novo admin, do branch newforms-admin [4] oferece o ManyToManyRawIdWidget [3], muito leve, mas nada amigável, considerando que este exibe somente o código dos itens selecionados, o que não ajuda de forma alguma o usuário final.

Com um problema para resolver num trabalho onde nos aproximamos de uma base de 20 mil clientes, surgiu a idéia para o Ajax ManyToManyField Widget, um nome meio D. Pedro I, mas que traduz exatamente o que é: uma alternativa leve sem se tornar estranha ao usuário: exibe-se um campo de auto-complete em Ajax, e à medida que o usuário escolhe o item desejado, clica-se no íconde com sinal de "+" e este é adicionado a uma lista logo acima.

Para isso, fiz uso de do plugin de auto-complete [5] disponível para jQuery [6], criado por Dylan Verheul. Com algumas modificações. Após uma conversa com o mesmo, eu soube que as minhas modificações se tornaram desnecessárias ante à nova versão disponível - farei a adaptação em breve.

http://marinho.webdoisonline.com/blog/p/152/?img=1

Verifique os exemples disponíveis, e os arquivos estáticos utilizados. É necessário o jQuery, de preferência em sua versão mais recente.

Por fim, é importante ressaltar os dois elementos principais do widget:

auto_complete_view

Esta é uma generic view necessária para a disponibilização dos dados desejados em formato separado por pipe (|) - este é o formato utilizado pelo plugin de auto-complete - com possibilidade de pesquisa por quantos campos forem necessários:

from django.conf.urls.defaults import *

from apps.utils.ajax_m2m_widget import auto_complete_view
from models import Spare, Category

def spare_auto_query_func(q):
    return Spare.objects.filter(name__startswith=q)

def category_auto_query_func(q):
    return Category.objects.filter(name__startswith=q)

urlpatterns = patterns('apps.spares.views',
    (r'^spare/auto/$', auto_complete_view, {'query_func': spare_auto_query_func, 'desc_field': 'name', 'id_field': 'id'}),

    (r'^category/auto/$', auto_complete_view, {'query_func': category_auto_query_func, 'desc_field': 'name', 'id_field': 'id'}),
)

AjaxMultiSelect

Este é o widget a ser utilizado no admin (que seja on branch newforms-admin) ou em algum form do padrão NewForms. Veja o exemplo abaixo no Admin do newforms-admin:

from django.contrib import admin
from django.contrib.admin.options import ModelAdmin

from apps.spares.models import Category, Spare
from apps.utils.ajax_m2m_widget import AjaxMultiSelect

class SpareAdmin(ModelAdmin):
    list_display = ('name','manufacturer','description')
    list_display_links = ('name',)
    list_filter = ('manufacturer',)
    raw_id_fields = ('manufacturer','specification_sheet',)

    def formfield_for_dbfield(self, db_field, **kwargs):
        if db_field.name == 'categories':
            kwargs['widget'] = AjaxMultiSelect(db_field.verbose_name, Category, '/spares/category/auto/', attrs={'style': 'margin-left: 105px;'})
        elif db_field.name == 'equivalents':
            kwargs['widget'] = AjaxMultiSelect(db_field.verbose_name, Spare, '/spares/spare/auto/', attrs={'style': 'margin-left: 105px;'})

        if 'widget' in kwargs:
            return db_field.formfield(**kwargs)
        else:
            return super(SpareAdmin, self).formfield_for_dbfield(db_field, **kwargs)

admin.site.register(Category)
admin.site.register(Spare, SpareAdmin)

Agora um exemplo em form:

from django import newforms as forms

from apps.spares.models import Category, Spare
from ajax_m2m_widget import AjaxMultiSelect

class MyForm(forms.Form):
    spares = forms.Field(widget=AjaxMultiSelect(db_field.verbose_name, Spare, '/spares/spare/auto/'))
    categories = forms.Field(widget=AjaxMultiSelect(db_field.verbose_name, Category, '/spares/category/auto/'))

O download está disponível em [7] (o Google fez o favor de bloquear minha conta para criação de novos projetos pelas próximas 24 horas por motivos que só deus sabe).

Links relacionados

[1]http://code.djangoproject.com/browser/django/trunk/django/newforms/widgets.py#L245
[2]http://code.djangoproject.com/browser/django/branches/newforms-admin/django/contrib/admin/widgets.py#L12
[3]http://code.djangoproject.com/browser/django/branches/newforms-admin/django/contrib/admin/widgets.py#L112
[4]http://code.djangoproject.com/wiki/NewformsAdminBranch
[5]http://code.google.com/p/jquery-autocomplete/
[6]http:/jquery.com/
[7]http://django-plus.googlecode.com/files/ajax_m2m_widget.rar

Leia essa entrada em seu contexto original »

Publicações anteriores


Feeds RSS

Envolva-se

O Django Brasil é um grupo de usuários e pesquisadores brasileiros de Django, uma framework para desenvolvimento ágil para a Web, baseada na linguagem Python e em padrões da programação orientada a objetos.

Listas de discussão

  • Usuários do Django no Brasil: Lista de discussão de ajuda ao Django em português.

    Inscreva-se na lista Django-Brasil
  • django-l10n-portuguese: Equipe de localização e tradução do Django para o português.

    Iscreva-se na lista de localização

Diga ao mundo

Obtenha ajuda

Autores

Você escreve sobre Django em português? Avise-nos, e adicionaremos seu feed nesta página.


Hospedado por PyTown.com. Django Brasil é a comunidade brasileira de usuários do framework web Django. Django é uma marca registrada de Lawrence Journal-World.