Microtutoriais B: mudanças entre as edições
mSem resumo de edição |
|||
(8 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 | = 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 154: | Linha 155: | ||
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(" | 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: | |||
[[Category: | <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 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 <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.