Django: Desenvolvendo uma aplicação web em minutos

9,076 views

Published on

Tutorial de uma aplicação "Twitter like" usando Djando (1.2)

3 Comments
13 Likes
Statistics
Notes
No Downloads
Views
Total views
9,076
On SlideShare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
303
Comments
3
Likes
13
Embeds 0
No embeds

No notes for slide

Django: Desenvolvendo uma aplicação web em minutos

  1. 1. Desenvolvendo uma aplicação web em minutos Rodrigo Nossal
  2. 2. Um pouco sobre Django:  The web framework for perfectionists with deadlines  Python  Mapeado objeto­relacional (No SQL!!)  MVT (MVC), DRY  URLs Elegantes  Interface de administração automática  Internacionalização  Sistema de Cache http://www.djangoproject.com
  3. 3. Quem usa o Django? Google App Engine
  4. 4. Outros frameworks: Python: TurboGears (http://www.turbogears.com) Pylons (http://pylonshq.com) PHP: Cake (http://cakephp.org) Symphony (http://www.symfony­project.org) Ruby: Rails (http://rubyonrails.org) Merb (http://merbivore.com)
  5. 5. A aplicação
  6. 6. A aplicação - Escopo: Uma aplicação de microblog (Twitter like)   Registro (simples)   Login   Fazer posts   Responder aos posts   Adicionar (seguir) amigos
  7. 7. Botando a mão na massa
  8. 8. Botando a mão na massa - Ambiente: Criando um projeto:  $ django-admin startproject microblog Criando uma aplicação: $ cd microblog $ ./manage.py startapp app
  9. 9. Botando a mão na massa - Ambiente: Microblog Blog __init__.py models.py views.py __init__.py manage.py settings.py urls.py
  10. 10. Botando a mão na massa - Ambiente:  Base de dados: settings.py DATABASE_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',
  11. 11. Models SQL pra que mesmo?
  12. 12. Models – Criando nossos modelos: microblog/app/models.py Habilitando o profile: settings.py AUTH_PROFILE_MODULE = 'app.UserProfile'
  13. 13. Models – 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()
  14. 14. Models – 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()
  15. 15. Models – Interface de administração:  Habilitando a aplicação de administração INSTALLED_APPS = ( … 'django.contrib.admin', app/admin.py
  16. 16. Urls
  17. 17. URLs:   Urls elegantes, nada de urls como essa: http://www.clicrbs.com.br/blog/jsp/default.jsp?uf=1& pg=1&coldir=1&section=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: friends followers add remove status /<número>/
  18. 18. URLs:   Expressões regulares   Habilitar a url para a interface de administração admin.autodiscover() (r'^admin/(.*)', admin.site.root)
  19. 19. Vamos testar! $ ./manage.py runserver
  20. 20. URLs - Patterns:  index: urlpatterns += patterns('microblog.app.wiews', (r'^$', 'index'), )
  21. 21. Views
  22. 22. Wiews:   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!!”)
  23. 23. Templates
  24. 24. Templates:   Conteúdo separado do design   Herança (block, extends)   Blocos (block)   Snippets (include)   Filtros   Tags (for, if, ifequal, ifnotequal) {{ varivavel }} {% tags %} {{ variavel|filtro }}
  25. 25. Templates - herança: base.html
  26. 26. Templates:   base.html   login.html   register.html   profile.html   index.html   friends.html  followers.html   posts_list_snippet.html
  27. 27. Views & Templates
  28. 28. Views & Templates:  index  user_friends  user_followers  user  register  add  remove  status
  29. 29. Views & Templates:   Implementando as views   Views shortcuts: get_object_or_404, render_to_response   Contexts settings.py TEMPLATE_CONTEXT_PROCESSORS = ( … 'django.core.context_processors.auth',
  30. 30. Forms, ModelForms
  31. 31. Forms, ModelForms:   UserCreationForm: form = UserCreationForm(request.POST)   Validação: if form.is_valid():   ModelForm: class PostForm(Model.Form)
  32. 32. Onde aprender mais? http://docs.djangoproject.com http://groups.google.com.br/group/django­brasil http://www.aprendendodjango.com http://www.djangobrasil.org

×