Microtutoriais B: mudanças entre as edições

De Pontão Nós Digitais
Ir para navegaçãoIr para pesquisar
mSem resumo de edição
 
(9 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 28: Linha 28:




= Django1B: Um único app com conexão mínima com ao BD =
= Django1B: Um único app com conexão mínima ao BD =


Iniciamos um app:
Iniciamos um app:
Linha 144: Linha 144:
Agora, no views.py do seu app, crie uma função oform:
Agora, no views.py do seu app, crie uma função oform:


<pre>from cadastroMinimo.forms import EntidadeForm
<pre>from django.template import RequestContext
from cadastroMinimo.forms import EntidadeForm


def oform(request):
def oform(request):
Linha 153: Linha 154:
             foo.nome = form.data['nome']
             foo.nome = form.data['nome']
             foo.save()
             foo.save()
             return HttpResponse("Entidade %s adicionada ao catálogo aberto" % (form.data['nome']))
 
             return HttpResponse(u"Entidade %s adicionada ao catálogo aberto" % (form.data['nome']))


     form = EntidadeForm()
     form = EntidadeForm()
     context_instance=RequestContext(request)
     context_instance=RequestContext(request)
     return render_to_response("usuarioSimples/oform.html",{"form" : form,}, context_instance)</pre>
     return render_to_response("cadastroMinimo/oform.html",{"form" : form,}, context_instance)</pre>
 
Neste ponto, note que é preciso criar um EntidadeForm em um arquivo chamado
forms.py do seu app. Crie o arquivo com isso dentro:
 
<pre>#-*- coding: utf-8 -*-
from django import forms
 
class EntidadeForm(form.Form):
    nome = forms.CharField(max_length=200)</pre>
 
e por fim coloque o oform.html na pasta cadastroMinimo dos seus templates.
Aqui um modelo mínimo:
 
<pre><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
    <title>Quem é?</title>
</head>
<body>
    <h1>Quem é você?</h1>
    <form action="." method="POST">{% csrf_token %}
        {{ form }}
        <p><input type="submit" value="Submit"></p>
    </form>
</body>
</html></pre>
 
Pronto. Note a forma como os dados no formulário foi utilizado
na view.py
 
= Django4B: Desta etapa e do resto  =
 
Caso você tenha feito tudo o que este tutorial B sugere, você deve ter um sisteminha de cadastro de algum campo.
 
Tanto já existe:
 
*Uma interface de administração que estará sempre
 
acompanhando os seus models.py: http://127.0.0.1:8000/admin
 
<br>
 
*Quanto uma frente voltada ao visitante que consiste em<br>
 
Uma url sempre mostrando uma listagem&nbsp;dos nomes cadastrados: http://127.0.0.1:8000/
 
Um form para o visitante cadastrar um novo nome: http://127.0.0.1:8000/oform
 
<br>
 
Note que a linkagem entre endereços nas páginas podem todas agora serem
 
feitas nos templates, através dos recursos usuais de html e css, como &lt;a href= e outros campos de marcação.


Além disso, toda a parte em Javascript pode ser utilizada normalmente, também nos templates.


[[Category:Lab Macambira]]
[[Category:Lab_Macambira]]

Edição atual tal como às 13h47min de 18 de setembro de 2011

Django0B: Uma View Estática

Agora voltamos à estaca zero. Vamos iniciar um novo app.

   $ django-admin.py startproject projminimo

Dentro do diretório projminimo, no arquivo urls.py, descomente a seguinte linha:

   url(r'^$', 'projminimo.views.home', name='home'),

Faça um arquivo views.py dentro do seu projetominimo/

#-*- coding: utf-8 -*-
from django.http import HttpResponse

def home(request):
    return HttpResponse("Eu sou uma view estática")

Inicie o server com:

   $ python manage.py runserver

e vá para o endereço indicado no terminal. Sua view estática está funcionando. Guarde no bolso.


Django1B: Um único app com conexão mínima ao BD

Iniciamos um app:

   # python manage.py startapp cadastroMinimo

Dentro do cadastroMinimo/models.py, coloque classe:

class Entidade(models.Model):
    nome = models.CharField(max_length=200)

Acerta-se o DATABASES no settings.py, o meu ficou assim:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'ec_criativa',                      # Or path to database file if using sqlite3.
        'USER': 'dj55',                      # Not used with sqlite3.
        'PASSWORD': 'foobar',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

Descomenta o admin e adiciona o app, ambos no INSTALLED_APPS, que fica com estas linhas:

    'django.contrib.admin',
    'cadastroMinimo',

Agora é só habilitar o caminho para o admin (descomente no urls.py):

from django.contrib import admin
admin.autodiscover()
...
    url(r'^admin/', include(admin.site.urls)),

colocar um no cadastroMinimo/admin.py:

from django.contrib import admin
from cadastroMinimo.models import Entidade

class EntidadeAdmin(admin.ModelAdmin):
    list_display=("nome",)

admin.site.register(Entidade, EntidadeAdmin)

e criar as tabelas e dar syncdb:

$ python manage.py sql cadastroMinimo
$ python manage.py syncdb

Pronto, seu registro minimo está fumegando ao menos dentro do Admin.

Verifique eu após o login na interface de Admin, você pode adicionar entidades e deletá-las.

Django2B: Uma view para o registro

na urlpatterns do seu urls.py, coloque:

   url(r'^$', 'projminimo.cadastroMinimo.views.mostra', name='mostra'),

Você precisa então criar uma função chamada 'mostra' no seu views.py do app cadastroMinimo. Aqui um exemplo que usaremos:

# Create your views here.
from django.http import HttpResponse
from django.shortcuts import render_to_response
from cadastroMinimo.models import Entidade

def mostra(request):
    entidades = Entidade.objects.all()
    return render_to_response("cadastroMinimo/mostra_entidades.html", {"entidades":entidades})

Aqui o importante é notar a menção ao 'mostra_entidades.html'. Fechar a nossa visualiação dos dados, é necessário ajeitar o caminho no TEMPLATE_DIRS do settings.py e disponibilizar o template. Aqui um exemplo funcional e enxugado:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
    <title>A Galera</title>
</head>
<body>
<ul>
{% for entidade in entidades %}
        <li>{{ entidade.nome }}</li>
{% endfor %}
</ul>
</body>
</html>

O servidor de dev que vem com o django precisa ser reiniciado sempre que um novo arquivo deve ser levado em consideração.

Você deve estar vendo uma lista itemizada das entidades que cadastrou pelo admin.

Django3B: Uma entrada de form para o visitante também cadastrar

Faça um caminho no seu urls.py. Tipo:

   url(r'^oform/$', 'projminimo.cadastroMinimo.views.oform', name='oform'),

Agora, no views.py do seu app, crie uma função oform:

from django.template import RequestContext
from cadastroMinimo.forms import EntidadeForm

def oform(request):
    if request.method == "POST":
        form = EntidadeForm(request.POST)
        if form.is_valid():
            foo = Entidade()
            foo.nome = form.data['nome']
            foo.save()

            return HttpResponse(u"Entidade %s adicionada ao catálogo aberto" % (form.data['nome']))

    form = EntidadeForm()
    context_instance=RequestContext(request)
    return render_to_response("cadastroMinimo/oform.html",{"form" : form,}, context_instance)

Neste ponto, note que é preciso criar um EntidadeForm em um arquivo chamado forms.py do seu app. Crie o arquivo com isso dentro:

#-*- coding: utf-8 -*-
from django import forms

class EntidadeForm(form.Form):
    nome = forms.CharField(max_length=200)

e por fim coloque o oform.html na pasta cadastroMinimo dos seus templates. Aqui um modelo mínimo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
    <title>Quem é?</title>
</head>
<body>
    <h1>Quem é você?</h1>
    <form action="." method="POST">{% csrf_token %}
        {{ form }}
        <p><input type="submit" value="Submit"></p>
    </form>
</body>
</html>

Pronto. Note a forma como os dados no formulário foi utilizado na view.py

Django4B: Desta etapa e do resto

Caso você tenha feito tudo o que este tutorial B sugere, você deve ter um sisteminha de cadastro de algum campo.

Tanto já existe:

  • Uma interface de administração que estará sempre

acompanhando os seus models.py: http://127.0.0.1:8000/admin


  • Quanto uma frente voltada ao visitante que consiste em

Uma url sempre mostrando uma listagem dos nomes cadastrados: http://127.0.0.1:8000/

Um form para o visitante cadastrar um novo nome: http://127.0.0.1:8000/oform


Note que a linkagem entre endereços nas páginas podem todas agora serem

feitas nos templates, através dos recursos usuais de html e css, como <a href= e outros campos de marcação.

Além disso, toda a parte em Javascript pode ser utilizada normalmente, também nos templates.