Exemplo didático: seleção de cidades com API JSON com Generic Views & AJAX com JQuery

958 views
Skip to first unread message

Luciano Ramalho

unread,
May 30, 2012, 1:48:27 AM5/30/12
to django...@googlegroups.com
Pessoal,

Hoje conclui um primeiro demo combinando JQuery com class-based
Generic Views para gerar JSON. O código está no Github:

https://github.com/acpy/django-ibge

A demonstração envolve selecionar municípios da base do IBGE,
organizadas em uma hierarquia de 3 níveis: região, UF e meso-região,
usando AJAX via JQuery para preencher as listas (HTML select).

O HTML é o mais simples possível, e sem CSS (portanto feio).

O mais importante é a demonstração da articulação de Generic Views
para produzir JSON, e JQuery para consumir esta API.

[ ]s
Luciano


--
Luciano Ramalho
NOVO TWITTER: @ramalhoorg

Autor e instrutor dos cursos:
* Academia Python na Globalcode
--> http://python.globalcode.com.br

* Python para quem sabe Python nas Oficinas Turing
--> http://turing.com.br/ppqsp

d4n1

unread,
May 30, 2012, 7:52:47 AM5/30/12
to django...@googlegroups.com
Bem legal :)


--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>



--
#!/usr/bin/python
class Myself(Developer):
    @myself
    def about:
        '''
        Developer Python,
        SysAdmin GNU/Linux,
        Archlinux and Gnome user and developer,
        Degree in Systems Analysis and Development,
        Graduate Student in Software Engineering,
        Technician Analysis and System Design,
        Technical Project and Network Administration,
        Linux Certification (LPI-1),
        Designer, Bassist, ...
        '''       
        return ['Daniel Melo<http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4499888T5>
', 'blog <http://d4n1h4ck.blogspot.com.br/>', 'github<https://github.com/d4n1>
']


Fábio Elísio

unread,
May 30, 2012, 9:52:53 AM5/30/12
to django...@googlegroups.com
Luciano me tira uma duvida, to dando uma estudada aqui nessa classe que gera o JSON (no caso api), eu poderia fazer ela direto no view não poderia?
no caso porque vc fez essa separação? Valeu ta muito show de bola.... 
dev_web = {
    nome : Fábio Elisio,
    profissao : Web Developer,
    twitter : @felisio
}




Luciano Ramalho

unread,
May 30, 2012, 10:29:53 AM5/30/12
to django...@googlegroups.com
2012/5/30 Fábio Elísio <fabio....@gmail.com>
> Luciano me tira uma duvida, to dando uma estudada aqui nessa classe que
> gera o JSON (no caso api), eu poderia fazer ela direto no view não poderia?
> no caso porque vc fez essa separação? Valeu ta muito show de bola....

Realmente, Fãbio, normalmente as Generic Views ficam no arquivo views.py.

Mas ao desenvolver este exemplo eu experimentei o Tastypie, uma
biblioteca para fazer APIs REST em Django, e vi que nela eles usam
esta convenção de colocar suas definições em um arquivo api.py e achei
uma boa idéia, creio que ajuda na organização do projeto: as views
"tradicionais" que geram páginas HTML ficam em views.py, e as views
que geram respostas JSON ficam em api.py.

Por sinal, achei o Tastypie muito bom mesmo, porém percebi que ele
fazia muito mais do que eu precisava: neste projeto a API REST é
apenas para consulta, e muito da complexidade do Tastypie está no
tratamento de autenticação e operações que modificam os dados, mas eu
precisava apenas gerar JSON para leitura. Por isso acabei não usando
ele.

No final acho que ficou também um exemplo didático de especialização
de Generic Views.

Falando nisso, fiz uns diagramas UML para me ajudar a entender e
explicar as class-based Generic Views do Django:

http://turing.com.br/material/acpython/mod3/django/views1.html#modelo-de-classes-das-views-genericas-list

Os diagramas fazem parte do material da Academia Python, que terá uma
nova turma às 2as e 4as começando em agosto.

Grato pelo feedback, Fábio!

[ ]s
Luciano

Mário Neto

unread,
May 30, 2012, 12:00:16 PM5/30/12
to django...@googlegroups.com
Luciano, como de costume, muito bom seu material!
Esse domínio "turing" ta virando referencia de pytonistas e djangonautas do brasil
vlw! =)
Att. Mário Araújo Chaves Neto
Programmer, Designer and U.I. Engineer

MBA in Design Digital - 2008 - FIC
Analysis and Systems Development - 2011 - Estácio
Design and Implementation of Internet Environments - 2003 - FIC

Fábio Elísio

unread,
May 30, 2012, 1:07:32 PM5/30/12
to django...@googlegroups.com
Obrigado a você Grande Mestre Pela explicação....



Reply all
Reply to author
Forward
0 new messages