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

De Pontão Nós Digitais
Ir para navegaçãoIr para pesquisar
(migrando os tutoriais prontos para cá)
 
mSem resumo de edição
 
(16 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 25: Linha 25:
e vá para o endereço indicado no terminal. Sua view estática
e vá para o endereço indicado no terminal. Sua view estática
está funcionando. Guarde no bolso.
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:
<pre>
class Entidade(models.Model):
    nome = models.CharField(max_length=200)
</pre>
Acerta-se o DATABASES no settings.py, o meu ficou assim:
<pre>
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.
    }
}
</pre>
Descomenta o admin e adiciona o app, ambos no INSTALLED_APPS, que fica com estas linhas:
<pre>
    'django.contrib.admin',
    'cadastroMinimo',
</pre>
Agora é só habilitar o caminho para o admin (descomente no urls.py):
<pre>
from django.contrib import admin
admin.autodiscover()
...
    url(r'^admin/', include(admin.site.urls)),
</pre>
colocar um no cadastroMinimo/admin.py:
<pre>
from django.contrib import admin
from cadastroMinimo.models import Entidade
class EntidadeAdmin(admin.ModelAdmin):
    list_display=("nome",)
admin.site.register(Entidade, EntidadeAdmin)
</pre>
e criar as tabelas e dar syncdb:
<pre>
$ python manage.py sql cadastroMinimo
$ python manage.py syncdb
</pre>
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:
<pre># 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})</pre>
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:
<pre><!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></pre>
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:
<pre>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)</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]]

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.