Introdução
O Django é um framework MVC que auxilia na construção de aplicações Web com Python utilizando o bom e velho padrão MVC (Model-View-Controller). Nele, é possível criar aplicações de forma bem rápida e simples. Bastando criar algumas linhas de código e você já consegue ter CRUDs básicas funcionando.Primeiros passos
Para iniciar o desenvolvimento, vamos criar uma aplicação utilizando a ferramenta RHC (em um post anterior eu expliquei como utilizar)$ rhc create-app djangoapp python-2.7 --from-code git://github.com/openshift/django-example.git
Página inicial da aplicação Django |
CRUD sem esforço: A interface administrativa do Django
Uma das coisas que gostei do Django é justamente porque ele facilita muito a geração de telas de cadastro, mais conhecidas como CRUD (Create-Retrieve-Update-Delete), tornando assim mais rápido o desenvolvimento de telas que realmente importam para o sistema. Sem contar que ele já fornece autenticação de usuários na criação da aplicação.
Para isso o Django possui o Django Admin Site, que é uma série de pacotes que permite criar essas telas sem muito esforço de código. Basta algumas linhas e logo é possível fazer o CRUD das suas entidades. Como o Django Admin Site já está acessível assim que você cria a aplicação no OpenShift, já é possível acessá-la.
Mas espera! Falta a senha do admin e sem ela não dá pra acessar. Para pegar a senha, é simples: basta acessar a aplicação via SSH e procurar pelo arquivo app-root/runtime/data/CREDENTIALS e lá estará os dados de usuário e senha para acessar o Django Admin Site:
Capturando a senha gerada pelo OpenShift |
INSTALLED_APPS = (Depois, abra (ou crie se não existir) o arquivo wsgi/openshift/models.py e adicione o seguinte conteúdo:
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'openshift',)
from django.db import modelsPor fim, abra (ou crie se não existir) o arquivo wsgi/openshift/admin.py e adicione o seguinte conteúdo:
class Pessoa(models.Model):
nome = models.CharField(max_length=40)
idade = models.IntegerField()
from django.contrib import admin
from openshift.models import *
admin.site.register(Pessoa)
Depois disso, é só enviar o código para o OpenShift:
$ git add . --all
$ git commit -m "Adicionando o Django Admin Site"
$ git push
Com isso, eu habilitei o Django Admin Site e criei um primeiro cadastro de Pessoas (conforme código em models.py). Após isso, acesse o Django Admin Site e você verá que apareceu uma seção openshift e um link para o cadastro de Pessoas:
Django Admin Site com o cadastro de Pessoas |
Agora é só fazer o cadastro de pessoas como preferir. =D
E se eu quiser expor minha aplicação com REST?
Como eu estou criando uma aplicação com diversas formas de acesso (Web, Mobile e Desktop), eu precisava expor meus modelos de forma que pudesse ser acessados para manipular meus cadastros. Procurei pela Internet (Google, pra ser mais específico) e encontrei um Framework muito bacana chamado Django REST Framework, que já faz o trabalho de capturar todos os modelos criados para o Django Admin Site e expor operações de CRUD via REST. Para adicionar em sua aplicação Django no OpenShift, basta executar os comandos abaixo:
$ rhc ssh djangoappDepois disso, iremos adicionar mais alguns códigos para expor nossa classe Pessoa para operações de CRUD. Abra o arquivo wsgi/openshift/settings.py e adicione o conteúdo em negrito:
> pip install djangorestframework
INSTALLED_APPS = (Depois, abra ou crie o arquivo wsgi/openshift/serializers.py e adicione o seguinte conteúdo:
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'openshift',
'rest_framework',)
from openshift import models
from rest_framework import serializers
class PessoaSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = models.Pessoa
fields = ('nome', 'idade')
Esse código simplesmente define que a classe Pessoa será exposta via REST e quais são os campos que podem ser visualizados via REST. Abra o arquivo wsgi/openshift/views.py e adicione o seguinte conteúdo em negrito:
import os
from django.shortcuts import render_to_response
from openshift import modelsfrom rest_framework import viewsetsfrom openshift import serializers
def home(request):
return render_to_response('home/home.html')
class PessoaViewSet(viewsets.ModelViewSet): queryset = models.Pessoa.objects.all() serializer_class = serializers.PessoaSerializer
Por fim, abra o arquivo wsgi/openshift/urls.py e adicione o conteúdo em negrito:
from django.conf.urls.defaults import patterns, include, url
from rest_framework import routersfrom openshift import views
router = routers.DefaultRouter()router.register(r'pessoa', views.PessoaViewSet)
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
url(r'^rest/', include(router.urls)), url(r'^$', 'openshift.views.home', name='home'),
# url(r'^openshift/', include('openshift.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
)
E depois é só enviar o código para o OpenShift:
$ git add . --all
$ git commit -m "Adicionando REST ao djangoapp"
$ git push
Pronto! Agora é só acessar a página http://djangoapp-rmartinelli.rhcloud.com/rest/pessoa/ e o Django REST Framework listará todas as pessoas cadastradas. Caso queira fazer um teste, experimente criar um código simples que acesse essa URL REST e veja se você recebe os dados. O formato da resposta é o JSON, então é possível facilmente fazer um parse e listar em uma página HTML.
Por ora, essa parte é apenas para esquentar para que nos próximos posts eu possa falar de como criar aplicações Web, Mobile e Desktop para consumir essa API REST e assim poder demonstrar outras tecnologias/linguagens/plataformas que o OpenShift pode utilizar.
Nenhum comentário:
Postar um comentário