Django com MySQL, JQuery, Ajax e JSON – Parte 1

Introdução

Django é um framework MVC para desenvolvimento web escrito em python. Proporciona velocidade no desenvolvimento, código limpo e organizado e uma poderosa ferramenta de administração.
Essa é a primeira parte de uma série de artigos sobre como criar um sistema de gestão de provedor de internet utilizando Django, MySQL, Javascript (JQuery), Ajax com JSON, CSS e Linux. No momento abordaremos apenas a parte de cadastro de clientes.
Para melhor entendimento, é desejável conhecimento básico em desenvolvimento web, Python e Linux.
Instalação, características, manual e outras informações podem ser encontradas no site Django Brasil.

Sobre o Sistema

Como forma de estudo, resolvi portar as funcionalidades básicas de um sistema antigo que desenvolvi em PHP para Django. Trata-se de um sistema de gestão de provedor de internet, que possibilita o cadastro de clientes, controle de banda, regras de firewall, fluxo de caixa e relatórios gerenciais, interagindo com ferramentas em ambiente Linux. Chamaremos nosso sistema de Sigep – Sistema de Gestão de Provedor. Nome nada criativo, eu sei, mas vamos deixar assim mesmo.

Iniciando

O sistema completo será desenvolvido em Linux, utilizando softwares específicos para o mesmo. É possível desenvolver em Windows e MacOS X, porém o ambiente de produção necessariamente deve ser Linux. Abaixo a descrição do ambiente de desenvolvimento utilizado:

Sistema Operacional: Ubuntu 8.04
IDE/Editor: Komodo Edit para códigos do Django e Geany 0.13 para HTML e CSS
Banco de Dados: MySQL 5.0
Linguagem: Python: 2.5 e Django 1.0

Instalação

Não será abordado o processo de instalação nesse artigo. No site www.djangobrasil.com tem um ótimo tutorial de instalação em Windows e Linux.

Projeto Vs. Aplicação

Em Django, projeto é o sistema no todo e aplicação é um módulo desse sistema. No nosso projeto Sigep, teremos várias aplicações (módulos), que são: cliente, rede, relatório, etc. Você pode criar uma única aplicação contendo toda funcionalidade do sistema, porém isso deixaria o código mais extenso e de difícil manutenção.

Criando o Projeto

Abra um terminal, entre no diretorio onde deseja trabalhar e crie o projeto com o script django-admin.py.

gu@notebook:~$ mkdir projetos
gu@notebook:~$ cd projetos
gu@notebook:~$ django-admin.py startproject sigep
gu@notebook:~$ cd sigep
gu@notebook:~$ ls sigep
__init__.py manage.py settings.py urls.py

O django-admin.py criou um diretório com o nome do projeto contendo os seguintes arquivos:

__init__.py: Arquivo vazio. Serve apenas para identificar que é um pacote python
manage.py: Script para gerenciar o projeto no django
settings.py: Arquivo de configuração do projeto
urls.py: Onde é definido o mapeamento das URLs

Configurando o Projeto

Vamos editar o arquivo settings.py e incluir as linhas abaixo:

1
2
import os
LOCAL = lambda *args:os.path.join(os.path.dirname(__file__), *args)

As linhas acimas criam uma função para retornar o caminho absoluto do diretório do nosso projeto. Agora vamos alterar as seguintes variáveis:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'sigepdjango'
DATABASE_USER = 'usuario_do_mysql_aki'
DATABASE_PASSWORD = 'senha_do_usuario_do_mysql_aki'
 
TIME_ZONE = 'America/Sao_Paulo'
 
LANGUAGE_CODE = 'pt-br'
 
MEDIA_ROOT = LOCAL('files')
 
TEMPLATE_DIRS = (
    LOCAL('templates')
)

O que fizemos acima foi configurar o projeto para acessar nosso banco de dados no MySQL, ajustar o timezone e idioma de acordo com o Brasil, setar o MEDIA_ROOT, que é o diretório onde nossos arquivos externos serão armazenados e definir o diretório templates onde nossos arquivos HTML ficarão.
Agora vamos criar nossa aplicação.

Pages: 1 2 3 4 5

You can leave a response, or trackback from your own site.

11 Responses to “Django com MySQL, JQuery, Ajax e JSON – Parte 1”

  1. Relsi disse:

    Muito legal o tuto, parabéns!!

    Hugs!!

  2. Abaster disse:

    Muito bom, dei só uma olhada mas com esse tipo de material o Django ira crescer cada vez mais.

  3. Rânielli The head disse:

    Fala rapaz parabens ai ficou muito bom ,,
    uma abraço

  4. Leandro disse:

    Gustavo,

    Meus sinceros parabéns pelo material, está excelente.

    Um desafio:
    – O que tu achas de fazer uma versão desse ajax com a biblioteca mootools ?

  5. Parabéns Gustavo,

    Ouvi falar da eficiência do Django a poucos dias e procurei algo simples que pudesse me comprovar isso…
    Vc sintetizou nesse post tudo o que eu estava procurando! Agora é só me aprofundar no framework. Se existirem mais posts como esse por aí tenho certeza que a comunidade Python e Django vão crescer muito em quantidade e principalmente em qualidade! 100% produção…

  6. Verifiquei que no arquivo forms.py ao usarmos o método mark_safe, devemos incluir a classe safestring do Django.
    Para resolver o problema devemos incluir a linha from django.utils.safestring import mark_safe no início do arquivo /cliente/forms.py para importar o método mark_safe.
    Abs…

  7. Maria disse:

    na linha
    $(“#”+objHtmlReturn).append(”+item.fields[fieldreturn]+”);

    qd escolho o bairro da um erro dizendo q a palavra ou o campo “fieldreturn” nao está definido por isso nao carrega as ruas no outro select

  8. Excelente tutorial, colega. :)

    Parabéns XD

  9. Helder disse:

    Opa, tudo bom.
    Primeiro quero parabenizá-lo pelo artigo. Segundo informo que o método javascript declarado acima para atualizar o select html está quebrado. Criei outro método jQuery, que ficou assim:

    $( function() {
    $(“select#id_bairro”).change(
    function() {
    $.getJSON( “/cliente/getlogradouros?id=” + $(this).val(),
    function(j) {
    var options = ‘———- ‘;
    for ( var i = 0; i < j.length; i++) {
    options += ”
    + j[i].fields['logradouro']
    + ”;
    }
    $(“#id_logradouro”).html(options);
    $(“#id_logradouro option:first”).attr(’selected’,
    ’selected’);
    $(“#id_logradouro”).attr(‘disabled’, false);
    })
    $(“#id_logradouro”).attr(’selected’, ’selected’);
    })
    })

    Para que ele funcione, o metodo no módulo views.py precisa ser mudado para o método GET, que no meu caso ficou assim:

    def getlogradouros( request ):
    id = int( request.GET.get( ‘id’ ) )
    lista = Logradouro.objects.filter( bairro = id )
    if lista.count() > 0:
    json = serializers.serialize( “json”, lista )
    else:
    lista = [{"pk":"0", "fields":{'logradouro':"Nenhum registro"}}]
    json = simplejson.dumps( lista )
    return HttpResponse( json, mimetype = “application/json” )

  10. luiz Martins disse:

    Ola gostei do material que vc publicou, vc terminou a segunda parte deste tutorial referente ao sistema???

    • gustavohenrique disse:

      @Luiz, nao cheguei a terminar, mas escrevi um artigo aqui no blog que fala um pouco sobre. O titulo é “Servidor Linux com Proxy e Controle de Banda”.
      []’s

Leave a Reply

Powered by WordPress | Shop the Best Verizon Wireless Deals. | Thanks to Best CD Rates, Credit Cards and Credit card