SlideShare uma empresa Scribd logo
Desenvolvendo uma aplicação web em minutos




                                  Rodrigo Nossal
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
Quem usa o Django?




     Google App Engine
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)
A aplicação
A aplicação - Escopo:




         Uma aplicação de microblog (Twitter like)



              Registro (simples)
              Login
              Fazer posts
              Responder aos posts
              Adicionar (seguir) amigos
Botando a mão na massa
Botando a mão na massa - Ambiente:




   Criando um projeto: 

       $ django-admin startproject microblog


   Criando uma aplicação:

       $ cd microblog
       $ ./manage.py startapp app
Botando a mão na massa - Ambiente:




             Microblog
                 Blog
                      __init__.py
                      models.py
                      views.py

                 __init__.py
                 manage.py
                 settings.py
                 urls.py
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',
Models




    SQL pra que mesmo?
Models – Criando nossos modelos:



    microblog/app/models.py




    Habilitando o profile: settings.py
      AUTH_PROFILE_MODULE = 'app.UserProfile'
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()
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()
Models – Interface de administração:




         Habilitando a aplicação de administração
           INSTALLED_APPS = (
           …
           'django.contrib.admin',


        app/admin.py
Urls
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>/
URLs:




          Expressões regulares
          Habilitar a url para a interface de administração
             admin.autodiscover()
             (r'^admin/(.*)', admin.site.root)
Vamos testar!




    $ ./manage.py runserver
URLs - Patterns:




   index:
       urlpatterns += patterns('microblog.app.wiews',
           (r'^$', 'index'),
       )
Views
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!!”)
Templates
Templates:


               Conteúdo separado do design
               Herança (block, extends)
               Blocos (block)
               Snippets (include)
               Filtros
               Tags (for, if, ifequal, ifnotequal)


             {{ varivavel }}

             {% tags %}
             {{ variavel|filtro }}
Templates - herança:




      base.html
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:



      Implementando as views
      Views
         shortcuts: get_object_or_404, render_to_response


      Contexts settings.py
        TEMPLATE_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)
Onde aprender mais?




     http://docs.djangoproject.com
     http://groups.google.com.br/group/django­brasil
     http://www.aprendendodjango.com
     http://www.djangobrasil.org

Mais conteúdo relacionado

Mais procurados

Python na Web
Python na WebPython na Web
Python na Web
Igor Sobreira
 
Construindo Sistemas Com Django
Construindo Sistemas Com DjangoConstruindo Sistemas Com Django
Construindo Sistemas Com Django
Marinho Brandão
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e Django
Osvaldo Santana Neto
 
Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!
Felipe Queiroz
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com python
Bruno Rocha
 
Django - Muito além do básico
Django - Muito além do básicoDjango - Muito além do básico
Django - Muito além do básico
Christiano Anderson
 
Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.
Arthur Furlan
 
PHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkPHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao Framework
Rafael Dohms
 
PHPSP TestFest 2009
PHPSP TestFest 2009PHPSP TestFest 2009
PHPSP TestFest 2009
Rafael Dohms
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
ricobl
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
Relsi Maron
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
Marcos Thomaz
 
Django Tem Ritmo
Django Tem RitmoDjango Tem Ritmo
Django Tem Ritmo
italomaia
 
Java primeiros-passos
Java primeiros-passosJava primeiros-passos
Java primeiros-passos
Leide Sayuri Ogasawara
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
Cristiano Pires Martins
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de django
Filipe Ximenes
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
Flávio Ribeiro
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
Gabriel Moura
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web Services
Dorneles Treméa
 
Doctrine for dummies
Doctrine for dummiesDoctrine for dummies
Doctrine for dummies
Ari Stopassola Junior
 

Mais procurados (20)

Python na Web
Python na WebPython na Web
Python na Web
 
Construindo Sistemas Com Django
Construindo Sistemas Com DjangoConstruindo Sistemas Com Django
Construindo Sistemas Com Django
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e Django
 
Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com python
 
Django - Muito além do básico
Django - Muito além do básicoDjango - Muito além do básico
Django - Muito além do básico
 
Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.
 
PHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkPHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao Framework
 
PHPSP TestFest 2009
PHPSP TestFest 2009PHPSP TestFest 2009
PHPSP TestFest 2009
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
Django Tem Ritmo
Django Tem RitmoDjango Tem Ritmo
Django Tem Ritmo
 
Java primeiros-passos
Java primeiros-passosJava primeiros-passos
Java primeiros-passos
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de django
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web Services
 
Doctrine for dummies
Doctrine for dummiesDoctrine for dummies
Doctrine for dummies
 

Destaque

Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
Osvaldo Santana Neto
 
Introdução ao Django
Introdução ao DjangoIntrodução ao Django
Introdução ao Django
Marcel Caraciolo
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
Rafael Cassau
 
Persistência de Objetos em Java
Persistência de Objetos em JavaPersistência de Objetos em Java
Persistência de Objetos em Java
armeniocardoso
 
Apresentação de Django Extension
Apresentação de Django ExtensionApresentação de Django Extension
Apresentação de Django Extension
Moacir Filho
 
Django, Framework Python para desenvolvimento web
Django, Framework Python para desenvolvimento webDjango, Framework Python para desenvolvimento web
Django, Framework Python para desenvolvimento web
Mayron Cachina
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao Django
Vinicius Mendes
 
Django
DjangoDjango
Aplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com DjangoAplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com Django
Diemesleno Souza Carvalho
 
Trabalhando com as views do Web2Py
Trabalhando com as views do Web2PyTrabalhando com as views do Web2Py
Trabalhando com as views do Web2Py
Hugo Leonardo Costa e Silva
 
Iniciando com docker
Iniciando com dockerIniciando com docker
Iniciando com docker
Marcelo Santos
 
Como fazer boas libs
Como fazer boas libs Como fazer boas libs
Como fazer boas libs
Vinta Software
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
Marcelo Santos
 
Django
DjangoDjango
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em python
Grupo de Testes Carioca
 
Técnicas de frontend para aplicações django - PythonBrasil[9]
Técnicas de frontend para aplicações django  - PythonBrasil[9]Técnicas de frontend para aplicações django  - PythonBrasil[9]
Técnicas de frontend para aplicações django - PythonBrasil[9]
Rael Max
 

Destaque (16)

Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
 
Introdução ao Django
Introdução ao DjangoIntrodução ao Django
Introdução ao Django
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Persistência de Objetos em Java
Persistência de Objetos em JavaPersistência de Objetos em Java
Persistência de Objetos em Java
 
Apresentação de Django Extension
Apresentação de Django ExtensionApresentação de Django Extension
Apresentação de Django Extension
 
Django, Framework Python para desenvolvimento web
Django, Framework Python para desenvolvimento webDjango, Framework Python para desenvolvimento web
Django, Framework Python para desenvolvimento web
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao Django
 
Django
DjangoDjango
Django
 
Aplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com DjangoAplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com Django
 
Trabalhando com as views do Web2Py
Trabalhando com as views do Web2PyTrabalhando com as views do Web2Py
Trabalhando com as views do Web2Py
 
Iniciando com docker
Iniciando com dockerIniciando com docker
Iniciando com docker
 
Como fazer boas libs
Como fazer boas libs Como fazer boas libs
Como fazer boas libs
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
 
Django
DjangoDjango
Django
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em python
 
Técnicas de frontend para aplicações django - PythonBrasil[9]
Técnicas de frontend para aplicações django  - PythonBrasil[9]Técnicas de frontend para aplicações django  - PythonBrasil[9]
Técnicas de frontend para aplicações django - PythonBrasil[9]
 

Semelhante a Django: Desenvolvendo uma aplicação web em minutos

Workshop Django
Workshop DjangoWorkshop Django
Workshop Django
Sérgio Santos
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Tchelinux
 
Django Módulo Básico Parte II
Django Módulo Básico Parte IIDjango Módulo Básico Parte II
Django Módulo Básico Parte II
antonio sérgio nogueira
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
Pablo Dall'Oglio
 
Python e Django
Python e DjangoPython e Django
Python e Django
pugpe
 
Python 06
Python 06Python 06
Python 06
Bruno Catão
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
Marcelo Rodrigo
 
Oficina de Django
Oficina de DjangoOficina de Django
Oficina de Django
Thiago Avelino
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheiras
Lambda 3
 
Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018
Rafael Sales Pavarina
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
Campus Party Brasil
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Carlos Duarte do Nascimento
 
Google Analytics Reporting API: Bebendo água direto da fonte
Google Analytics Reporting API: Bebendo água direto da fonteGoogle Analytics Reporting API: Bebendo água direto da fonte
Google Analytics Reporting API: Bebendo água direto da fonte
Johann Vivot
 
Django - Criando Aplicacoes Plugaveis
Django - Criando Aplicacoes PlugaveisDjango - Criando Aplicacoes Plugaveis
Django - Criando Aplicacoes Plugaveis
Marinho Brandão
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
grupoweblovers
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
Giovanni Bassi
 
Implementação de
Implementação de Implementação de
Implementação de
Rômulo Jales
 
Desenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engineDesenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engine
pugpe
 
Aplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoAplicações rápidas para a Web com Django
Aplicações rápidas para a Web com Django
Freedom DayMS
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
Vinícius de Paula
 

Semelhante a Django: Desenvolvendo uma aplicação web em minutos (20)

Workshop Django
Workshop DjangoWorkshop Django
Workshop Django
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
 
Django Módulo Básico Parte II
Django Módulo Básico Parte IIDjango Módulo Básico Parte II
Django Módulo Básico Parte II
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Python e Django
Python e DjangoPython e Django
Python e Django
 
Python 06
Python 06Python 06
Python 06
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 
Oficina de Django
Oficina de DjangoOficina de Django
Oficina de Django
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheiras
 
Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Google Analytics Reporting API: Bebendo água direto da fonte
Google Analytics Reporting API: Bebendo água direto da fonteGoogle Analytics Reporting API: Bebendo água direto da fonte
Google Analytics Reporting API: Bebendo água direto da fonte
 
Django - Criando Aplicacoes Plugaveis
Django - Criando Aplicacoes PlugaveisDjango - Criando Aplicacoes Plugaveis
Django - Criando Aplicacoes Plugaveis
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
Implementação de
Implementação de Implementação de
Implementação de
 
Desenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engineDesenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engine
 
Aplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoAplicações rápidas para a Web com Django
Aplicações rápidas para a Web com Django
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 

Último

Segurança da Informação - Onde estou e para onde eu vou.pptx
Segurança da Informação - Onde estou e para onde eu vou.pptxSegurança da Informação - Onde estou e para onde eu vou.pptx
Segurança da Informação - Onde estou e para onde eu vou.pptx
Divina Vitorino
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
Ismael Ash
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
Faga1939
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
ronaldos10
 
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdfEletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
barbosajucy47
 
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebuliçãoExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ismael Ash
 

Último (7)

Segurança da Informação - Onde estou e para onde eu vou.pptx
Segurança da Informação - Onde estou e para onde eu vou.pptxSegurança da Informação - Onde estou e para onde eu vou.pptx
Segurança da Informação - Onde estou e para onde eu vou.pptx
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
 
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdfEletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
 
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebuliçãoExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebulição
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
 

Django: Desenvolvendo uma aplicação web em minutos

  • 1. Desenvolvendo uma aplicação web em minutos Rodrigo Nossal
  • 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. Quem usa o Django? Google App Engine
  • 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)
  • 6. A aplicação - Escopo: Uma aplicação de microblog (Twitter like)   Registro (simples)   Login   Fazer posts   Responder aos posts   Adicionar (seguir) amigos
  • 7. Botando a mão na massa
  • 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. Botando a mão na massa - Ambiente: Microblog Blog __init__.py models.py views.py __init__.py manage.py settings.py urls.py
  • 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. Models SQL pra que mesmo?
  • 12. Models – Criando nossos modelos: microblog/app/models.py Habilitando o profile: settings.py AUTH_PROFILE_MODULE = 'app.UserProfile'
  • 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. 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. Models – Interface de administração:  Habilitando a aplicação de administração INSTALLED_APPS = ( … 'django.contrib.admin', app/admin.py
  • 16. Urls
  • 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. URLs:   Expressões regulares   Habilitar a url para a interface de administração admin.autodiscover() (r'^admin/(.*)', admin.site.root)
  • 19. Vamos testar! $ ./manage.py runserver
  • 20. URLs - Patterns:  index: urlpatterns += patterns('microblog.app.wiews', (r'^$', 'index'), )
  • 21. Views
  • 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!!”)
  • 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 }}
  • 26. Templates:   base.html   login.html   register.html   profile.html   index.html   friends.html  followers.html   posts_list_snippet.html
  • 28. Views & Templates:  index  user_friends  user_followers  user  register  add  remove  status
  • 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',
  • 31. Forms, ModelForms:   UserCreationForm: form = UserCreationForm(request.POST)   Validação: if form.is_valid():   ModelForm: class PostForm(Model.Form)
  • 32. Onde aprender mais? http://docs.djangoproject.com http://groups.google.com.br/group/django­brasil http://www.aprendendodjango.com http://www.djangobrasil.org