Django: Desenvolvendo uma aplicação web em minutos
-
Upload
rodrigo-nossal -
Category
Technology
-
view
5.123 -
download
5
description
Transcript of Django: Desenvolvendo uma aplicação web em minutos
Um pouco sobre Django:
http://www.djangoproject.com
The web framework for perfectionists with deadlines
Python
Mapeado objetorelacional (No SQL!!)
MVT (MVC), DRY
URLs Elegantes
Interface de administração automática
Internacionalização
Sistema de Cache
Outros frameworks:Outros frameworks:
Python:TurboGears (http://www.turbogears.com)Pylons (http://pylonshq.com)
PHP:Cake (http://cakephp.org)Symphony (http://www.symfonyproject.org)
Ruby:Rails (http://rubyonrails.org)Merb (http://merbivore.com)
A aplicaçãoA aplicação - Escopo: - Escopo:
Registro (simples)
Login
Fazer posts
Responder aos posts
Adicionar (seguir) amigos
Uma aplicação de microblog (Twitter like)
Botando a mão na massaBotando a mão na massa - Ambiente: - Ambiente:
Criando um projeto:
$ django-admin startproject microblog
Criando uma aplicação:
$ cd microblog$ ./manage.py startapp app
Botando a mão na massaBotando a mão na massa - Ambiente: - Ambiente:
Microblog Blog __init__.py models.py views.py __init__.py manage.py settings.py urls.py
Botando a mão na massaBotando a mão na massa - Ambiente: - Ambiente:
Base de dados: settings.pyDATABASE_ENGINE = 'mysql'DATABASE_NAME = 'microblog'DATABASE_USER = 'django'DATABASE_PASSWORD = '123456'
Templates:TEMPLATES_DIRS = (
os.path.join(os.path.dirname(__file__), '/app/templates')
Habilitar a aplicação:INSTALLED_APPS = (
…'microblog.app',
Models – Criando nossos modelosModels – Criando nossos modelos::
microblog/app/models.py
Habilitando o profile: settings.pyAUTH_PROFILE_MODULE = 'app.UserProfile'
Models – Brincando com a APIModels – Brincando com a API::
Sincronizando banco de dados:
$ ./manage.py syncdb
Usando o shell:
$ ./manage.py shell
>> from django.contrib.auth.models import User
>> from microblog.app.models import *
>> u = User(username = 'pedro',
first_name = 'Pedro',
last_name = 'da Silva')
>> u.save()
Models – Brincando com a APIModels – Brincando com a API::
Usando o shell (continuação):
>> u
>> up = UserProfile(user=u)
>> up.save()
>> User.objects.all()
>> User.objects.get(username = 'pedro')
>> p = User.objects.get(username = 'pedro').get_ profile()
>> p.friends.add(User.objects.get(username = 'paulo'))
>> p.friends.all()
Models – Interface de administraçãoModels – Interface de administração::
Habilitando a aplicação de administraçãoINSTALLED_APPS = (…'django.contrib.admin',
app/admin.py
Urls elegantes, nada de urls como essa:http://www.clicrbs.com.br/blog/jsp/default.jsp?uf=1&
pg=1&coldir=1§ion=Blogs&topo=3994.dwt&uf=1&local=1&template=3948.dwt&source=DYNAMIC,blog.BlogDataServer,getBlog&blog=222&tipo=1&post=199292
Nosso esquema de urls:/<usuario>/<ação>/ Ex.: /rodrigo/friends/
Nossas ações:friendsfollowersaddremovestatus /<número>/
URLs:URLs:
Expressões regulares
Habilitar a url para a interface de administraçãoadmin.autodiscover()(r'^admin/(.*)', admin.site.root)
URLs:URLs:
index:urlpatterns += patterns('microblog.app.wiews',
(r'^$', 'index'),)
URLs - Patterns:URLs - Patterns:
Generic wiews:
Autenticação:(r'^login$', 'django.contrib.auth.views.login',
{'template_name': 'login.html'}),(r'^logout$', 'django.contrib.auth.views.logout',
{'next_page': '/'})
view index:from django.http import HttpResponse
def index(request):return HttpResponse(“Hello world!!”)
Wiews:Wiews:
Conteúdo separado do design
Herança (block, extends)
Blocos (block)
Snippets (include)
Filtros
Tags (for, if, ifequal, ifnotequal)
Templates:Templates:
{{ varivavel }}
{% tags %}
{{ variavel|filtro }}
Templates:Templates:
base.html
login.html
register.html
profile.html
index.html
friends.html
followers.html
posts_list_snippet.html
Views & Templates:Views & Templates:
index
user_friends
user_followers
user
register
add
remove
status
Views & Templates:Views & Templates:
Implementando as views
Viewsshortcuts: get_object_or_404, render_to_response
Contexts settings.pyTEMPLATE_CONTEXT_PROCESSORS = (
…'django.core.context_processors.auth',
Forms, ModelForms:Forms, ModelForms:
UserCreationForm:form = UserCreationForm(request.POST)
Validação:if form.is_valid():
ModelForm:class PostForm(Model.Form)
http://docs.djangoproject.comhttp://groups.google.com.br/group/djangobrasilhttp://www.aprendendodjango.comhttp://www.djangobrasil.org
Onde aprender mais?Onde aprender mais?