quarta-feira, 21 de fevereiro de 2018

Administração

Área Administrativa do Django

O Django possui uma interface Web de administração. A partir desta interface podemos criar usuários e grupos de usuários para controlar a parte administrativa do site, podemos também ler metadados da camada de Modelo e gerar interface específica para este modelo, com diversos recursos e pronta para uso.

O objetivo deste post é basicamente acessar a área administrativa pela 1ª vez. Em outros posts faremos uso dos recursos mais avançados, com diversas customizações, da área administrativa do Django.
--------------------------------------------------------------------
Para verificar se o Django está com o admin habilitado como aplicação do projeto, verifique no arquivo mysite/settings.py, em INSTALLED_APPS, como abaixo:

# Application definition
INSTALLED_APPS = [
    'django.contrib.admin', # aqui
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'hello',
    'hellotemplate',
]
--------------------------------------------------------------------
Agora, acessar o site admin. Para tal, execute o servidor web:
python manage.py runserver

Depois, acesse o link:
http://127.0.0.1/8000/admin



O próximo passo é criar um Super Usuário (superuser) para fazer o Login. O superuser é um usuário que possui controle sobre todo o site. 
Vá no prompt do DOS, acesse o diretório do projeto \mysite. Execute:
python manage.py createsuperuser

Informe: username, email e password.
--------------------------------------------------------------------
Agora, acesse a parte administrativa do site. 1º, execute o comando:
python manage.py runserver # para levantar o servidor web

Acesse o endereço da parte administrativa do site:
http://localhost:8000/admin
Informe o usuário e senha criados.

Normalmente podem ocorrer erros relacionados a versões de tabelas de bancos de dados. Neste caso, será necessário utilizar comandos para atualizar banco de dados. Volte ao prompt do DOS e execute os comandos abaixo:
python manage.py makemigrations
python manage.py migrate
--------------------------------------------------------------------
O comando migrate instala e atualiza as tabelas do núcleo do Django. Além disso, o migrate instala qualquer registro necessário de banco de dados tal como permissões do admin e tipos de conteúdo.
Mais: o comando migrate verifica a configuração em INSTALLED_APPS e cria qualquer tabela do banco de dados necessária de acordo com as configurações do banco de dados no arquivo mysite/settings.py e as migrações que venha com a app. 
--------------------------------------------------------------------
Em seguida, levante o servidor web novamente e teste o link da área administrativa, informando usuário e senha.
Se tudo ocorrer normalmente, a tela abaixo deverá ser exibida:
--------------------------------------------------------------------
Obs. 1: Caso necessite executar novos comandos pelo prompt do DOS, acesse um novo terminal e ative o ambiente virtual.
Obs. 2: Perceba que o texto da parte administrativa está em inglês. Se desejar alterar para o português, faça o seguinte:
Acesse o arquivo settings.py (configurações do Django). 
Altere a configuração: de LANGUAGE_CODE = ‘en-us’ para ‘pt-br’.
--------------------------------------------------------------------

quinta-feira, 8 de fevereiro de 2018

Hello World com Template

Outro Hello World

Continuando, o projeto atual é o mysite.

O objetivo é criar uma aplicação de Hello World, utilizando uma simples Template.

Para criar esta nova aplicação acesse o diretório de destino mysite (diretório do Projeto, mysite do nível superior). Em seguida, execute o comando:
python manage.py startapp hellotemplate

Este comando irá gerar a estrutura básica padrão de uma aplicação, com arquivos e diretórios de um app do Django.
--------------------------------------------------------------------
Estrutura gerada:

hellotemplate/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py
--------------------------------------------------------------------
Após gerar os arquivos, vamos codificar de forma simplificada esta aplicação.
Crie um diretório dentro do diretório desta aplicação, com o nome templates. É onde ficarão armazenados os arquivos HTML de templates da aplicação. Em seguida, crie o arquivo index.html e salve-o dentro de templates. 
--------------------------------------------------------------------
Seguem os códigos:

Arquivo settings.py:
...
# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'hellotemplate', # adicionando a aplicação ao projeto django
]
...
--------------------------------------------------------------------
Arquivo hellotemplate\views.py:
# Create your views here.
from django.shortcuts import render
from django.views.generic import TemplateView # importa a classe

# Class-based views, outra forma de criar views
class HomeView(TemplateView): Classe HomeView herda de TemplateView
    template_name = 'index.html'
--------------------------------------------------------------------
Arquivo urls.py:
from django.contrib import admin
from django.urls import path

from hellotemplate.views import HomeView

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hellotemplate/',HomeView.as_view()),
]
--------------------------------------------------------------------
Outra codificação sem necessidade de codificar o arquivo views.py:
Arquivo views.py:
# codificação original de fábrica

Arquivo urls.py:
from django.contrib import admin
from django.urls import path

from django.views.generic import TemplateView

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello/',foo),
    path(
      'hellotemplate/', 
      TemplateView.as_view(template_name='index.html')
    ),
--------------------------------------------------------------------
Após codificar, vamos testar a aplicação. Via prompt do DOS, acesse o diretório do ambiente virtual e ative-o. Em seguida, acesse o diretório do projeto (onde está o arquivo manage.py).
Execute o Servidor Web, com o comando:
python manage.py runserver

Se o servidor Web foi executado corretamente, acesse o navegador web e digite o endereço:
http://localhost:8000/hellotemplate

Deve aparecer a página com o texto 'Hello World com Template!'

terça-feira, 6 de fevereiro de 2018

Minha 1ª App com Django

Hello World!

Conforme feito, o projeto atual é o mysite.

Um Projeto Django é separado por aplicações ou apps. 
Para criar uma aplicação em um Projeto acesse o diretório de destino mysite (diretório do Projeto, mysite do nível superior). Em seguida, execute o comando:
python manage.py startapp hello

Este comando irá gerar a estrutura básica padrão de uma aplicação, com arquivos e diretórios de um app do Django.
--------------------------------------------------------------------
Estrutura gerada:

hello/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

O arquivo admin.py possui funções administrativas, como registro de models para uso na área de administração do Django.
O arquivo apps.py é destinado a configuração da aplicação.
O arquivo __init__.py indica a app para o Python.
O arquivo models.py armazena dados dos banco de dados.
O arquivo tests.py onde codifica testes automáticos.
O arquivo views.py armazena requisições e lógicas da aplicação.
--------------------------------------------------------------------
Após gerar os arquivos, vamos codificar de forma simplificada a página de Hello World.
Seguem os códigos:

Arquivo settings.py:
...
# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'hello', # adicionando a aplicação ao django
]
...
--------------------------------------------------------------------
Arquivo hello\views.py:
from django.shortcuts import render
# Create your views here.

from django.http import HttpResponse

def foo(request):
  return HttpResponse('Hello World!') # definindo fnc de resposta

--------------------------------------------------------------------
Arquivo urls.py
from django.contrib import admin
from django.urls import path

from hello.views import foo # importando a view de hello\views.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello/',foo), # adicionando o novo path ao Django
]
--------------------------------------------------------------------
Após codificar, vamos testar a aplicação. Via prompt do DOS, acesse o diretório do ambiente virtual e ative-o. Esta ativação é para que tanto o Python quanto o Django a serem executados sejam os que estão relacionados a este ambiente virtual. Em seguida, acesse o diretório do projeto (onde está o arquivo manage.py).
Execute o Servidor Web, com o comando:
python manage.py runserver

Se o servidor Web foi executado corretamente, acesse o navegador web e digite o endereço:
http://localhost:8000/hello

Deve aparecer a página com o texto 'Hello World!'
--------------------------------------------------------------------
Obs.: As aplicações podem ficar em qualquer lugar dentro dos paths do Python. Neste exemplo, criamos a aplicação chamada "hello" no mesmo nível do arquivo manage.py. Desta forma a app pode ser importada como um módulo de nível superior dentro do projeto. Se fosse criada dentro de mysite (nível abaixo) seria considerada um submódulo de de mysite.

Obs.:Projetos X Apps do Django: Uma App é uma aplicação que tem determinada função, por exemplo um sistema de cadastro de Clientes. 
Um projeto é um conjunto de configurações e pode conter várias Apps. Uma App pode estar em vários projetos. 

Curiosidade: O termo Foo ou foo são termos genéricos amplamente usados para aludir a qualquer entidade informática cujo nome se ignora ou não se quer expressar. (Wikipedia)
--------------------------------------------------------------------

Tutorial 10 de 10

Codificando uma app simples Continuando a alteração no admin... Personalizando a listagem da página de Administração: Vamos fazer melh...