[ Login | Register | Lost password? ]

Criando o blog - Parte II

Por: Junior Tada
14/02/2014

Model – db.py

Quem perdeu a primeira parte ela está aqui. Bom agora iremos instanciar a classe DAL e criar as tabelas para o nosso banco de dados.

Entre na pasta models e edite o arquivo db.py, na verdade pode apagar todo o conteúdo e vamos fazer tudo.

# Módulo de autenticação

from gluon.tools import Auth

Primeiro o importe para a classe Auth

 

# Conecta com o Mysql

db = DAL('mysql://usuario:senha@localhost/nome_do_banco')

Aqui um exemplo de como conectar no banco mysql. Lembrando que pode ser utilizado qualquer banco de dados, na documentação oficial tem exemplos de como conectar em diversos bancos, basta mudar a string enviada no parâmetro da DAL.

response.generic_patterns = ['*']

# Usa o metodo de autenticação do web2py

auth = Auth(db)

auth.define_tables(username=False, signature=False)

Vamos permitir a visualização de view genéricas, instanciar o objeto auth e criar as tabelas definidas pelo web2py na classe Auth. Lembrando que ela já tem pronto métodos de segurança, login, reset password, etc. Você pode editar essas tabelas também. Vou deixar só o básico por enquanto.

E agora vou criar 3 tabelas. Fique a vontade para alterar qualquer uma das tabelas ou a estrutura, relacionamento entre elas.

# Cria tabela categoria

db.define_table('categoria',

Field('nome', 'string')

)

 

# Cria tabela post

db.define_table('post',

Field('texto', 'text', requires=IS_NOT_EMPTY(error_message='Insira um texto para esta postagem!')),

Field('data', 'date'),

Field('tipo', 'string'),

Field('titulo', 'string', requires=IS_NOT_EMPTY(error_message='O título é obrigatório!')),

Field('image', 'string'),

Field('autor', db.auth_user),

Field('views','integer'),

Field('tags', 'list:string'), #Lista de tags do post

Field('categoria', db.categoria) #Categoria do post

)

 

# Cria tabela comentarios

db.define_table('comentario',

Field('nome', 'string'),

Field('autor', db.auth_user),

Field('texto', 'string', requires=IS_NOT_EMPTY(error_message='Insira um comentário!')),

Field('data', 'date'),

Field('post', db.post)

)

Muito simples, explicando: db.define_table → para criar a tabela.

Dentro do parâmetro:('nome_da_tabela',Field('nome_do_campo', 'tipo_de_dado').

Aqui você encontra todos os tipos de dados que são suportados e os validadores que podem ser implementados.

Por último vamos autorizar a geração de crud's automáticos para a nossa tabela.

# Crud do web2py

from gluon.tools import Crud

crud = Crud(globals(), db)

Depois explico isto melhor quando for falar sobre o controle admin do site.

Como os arquivos dentro do models é executado em todas as requisições, quando for executado na primeira vez, se as tabelas não existirem no banco de dados, elas serão criadas. Se você alguma alteração no arquivo as tabelas farão um update automático. Para acessar qualquer entidade do banco utilizaremos o objeto db que foi instanciado neste arquivo. Ele fica disponível em qualquer parte do código no controller ou até mesmo nas views.

 

No próximo post vamos trabalhar com os controller e as views.  

Categoria: Programação

Tags: ['programacao,python,web2py,web,html']

Comentários: