SlideShare uma empresa Scribd logo
De Zero à Web 
com Python e Django 
Um guia para o empreendedorismo digital
Osvaldo Santana Neto 
• https://osantana.me 
• Python e Django 
• Empreendedor em "modo de 
espera” 
• Side Projects 
• Bootstrapping 
• Titans Solutions 
• Empresa de SP 
• Trabalho Remoto
Empreendedorismo 
Se é difícil de soletrar é difícil de fazer?
Fui enganado! Cadê o 
Python e o Django? 
Calma... Calma... A gente chega lá...
Como empreender?
Você precisará de... 
• Uma idéia válida para 
executar 
• Algum dinheiro (~R$100) 
• E tempo para trabalhar no 
projeto
Ideias 
• Quando esbarrar em um problema 
anote em um papel 
• Revisite o problema proponha 
soluções (ideias) 
• Faça uma planilha para classificar 
as ideias 
• Escolha uma e valide (Business 
Model Canvas e entrevistas) 
• Ideias simples são mais poderosas 
• Não se distraia com ideias novas. 
Anote-as.
Ideia & Execução 
• Ideias são um multiplicador de 
valor da execução 
• A execução é que tem valor 
• Ideia boa e bem executada é 
o melhor cenário 
• http://sivers.org/multiply 
• Validação de ideias 
• Conheça o mercado 
• Tenha "paixão"
Como conseguir 
dinheiro? 
Inverta o raciocínio: O que eu consigo 
fazer com o dinheiro que tenho?
Como conseguir 
tempo? 
Inverta o raciocínio: O que eu consigo 
fazer com o tempo que tenho?
Quem quer faz. 
Quem não quer inventa 
desculpas
Palavras Chaves 
• Bootstrapping 
• Side-Project 
• Passive Income 
• Cuidado com picaretagem! 
• Minimum Viable Product 
• Cuidado com: 
• Eventos de startup, busca 
por investimento/ 
financiamento, …
Execução Passo a Passo 
• Aprenda Python & Django  
• Escolha um nome 
• Registre um domínio (~R$30) 
• Escolha uma hospedagem 
(grátis~$9/mês) 
• Quickstartup (grátis~$49) 
• Tráfego (grátis~infinito) 
• Feedback
Python & Django 
• https://osantana.me/pydjango 
• Python - Linguagem 
• Guido van Rossum 
• Lançada em 1989 
• Monty Python 
• Django - Framework Web 
• Jacob K. Moss & Adrian Holovaty 
• Lançado em 2003 
• Django Reinhardt
Python 
• Linguagem de uso geral 
• Web, Mobile, Desktop, … 
• Multiplataforma 
• Unix, Linux, OS X, e até a porcaria do Windows 
• OOP 
• Suporte a código procedural e funcional 
• Interpretada (com compilação transparente de bytecode) 
• Linguagem aberta / Open Source
#!/usr/bin/env python3 
# coding: utf-8 
# programa1.py - Primeiro programa 
""" 
Importa o módulo random e sorteia 
um número inteiro entre 1 e 100 
""" 
import random 
numero = random.randint(1, 100) 
escolha = 0 
tentativas = 0 
print("Acerte o número que sorteei com o menor número de tentativas.") 
while escolha != numero: 
escolha = int(input("Digite um número inteiro entre 1 e 100: ")) 
tentativas += 1 
if escolha < numero: 
print("O número %s é menor que o sorteado." % (escolha,)) 
elif escolha > numero: 
print("O número %s é maior que o sorteado." % (escolha,)) 
print("Parabéns! Você acertou o número com %s tentativas." % (tentativas,))
#!/usr/bin/env python3 
# coding: utf-8 
class No(object): 
def __init__(self, questao=None, sim=None, nao=None): 
self._sim = sim 
self._nao = nao 
self._questao = questao 
def start(self): 
if self.ask("Esse animal {}".format(self._questao), sn=True): 
self._sim = self._sim.start() 
else: 
self._nao = self._nao.start() 
return self 
def ask(self, questao, sn=False): 
resposta = "" 
while resposta == "": 
resposta = input("{}? {}".format(questao, "(s/n) " if sn else "")) 
return resposta if not sn else (resposta[0].lower() == "s")
class Animal(No): 
def __init__(self, nome): 
super(Animal, self).__init__(nome) 
self._nome = nome 
def start(self): 
if not self.ask("É um(a) {}".format(self._nome), sn=True): 
animal = self.ask("Qual é o animal") 
questao = self.ask("O que um {} faz que {} não faz".format(animal, self._nome)) 
return No(questao, Animal(animal), self) 
print("Acertei!") 
return self 
def main(): 
raiz = No("vive na água", Animal("baleia"), Animal("macaco")) 
while True: 
raiz.start() 
if not raiz.ask("Jogar novamente", sn=True): 
break 
if __name__ == '__main__': 
main()
$ python3 animais.py 
Esse animal vive na água? (s/n) n 
É um(a) macaco? (s/n) n 
Qual é o animal? cachorro 
O que um cachorro faz que macaco não faz? é domesticado 
Jogar novamente? (s/n) s 
Esse animal vive na água? (s/n) n 
Esse animal é domesticado? (s/n) s 
É um(a) cachorro? (s/n) s 
Acertei!
Django 
• Framework Web Ágil 
• DRY - Don’t Repeat Yourself 
• MVC ou MTV (Model/View/Controller, Model/Template/ 
View) 
• ORM ➡️ Banco de Dados Relacional 
• Postgres, MySQL, Oracle, … 
• Instagram, Pinterest, Disqus, …
# coding: utf-8 
from django.db import models 
from django.core.urlresolvers import reverse 
from django.utils.translation import ugettext_lazy as _ 
CONTACT_STATUS = ( 
("N", _("New")), 
("O", _("Ongoing")), 
("R", _("Resolved")), 
("C", _("Closed")), 
("I", _("Invalid")), 
) 
class Contact(models.Model): 
status = models.CharField(_("status"), max_length=1, 
choices=CONTACT_STATUS, default="N") 
created_at = models.DateTimeField(_("created at"), auto_now_add=True) 
updated_at = models.DateTimeField(_("updated at"), auto_now=True) 
name = models.CharField(_("name"), max_length=255) 
email = models.EmailField(_("email"), max_length=255) 
phone = models.CharField(_("phone"), max_length=100, blank=True) 
message = models.TextField(_("message")) 
@property 
def admin_url(self): 
return reverse("admin:contacts_contact_change", args=(self.pk,))
# coding: utf-8 
from django.contrib import admin 
from .models import Contact 
class ContactAdmin(admin.ModelAdmin): 
list_display = ('updated_at', 'name', 'email', 'phone', 'status') 
list_display_links = ('updated_at', 'name', 'email', 'phone') 
list_editable = ("status",) 
list_filter = ('status',) 
search_fields = ('name', 'email') 
ordering = ("-updated_at",) 
admin.site.register(Contact, ContactAdmin)
Interface de Admin
Interface de Admin
Quickstartup 
Em breve...
Quickstartup
Quickstartup
Quickstartup
Ação! 
• Escolha um nome (domínio livre) 
• Registre um domínio 
• http://registro.br/ ou 
https://gandi.net 
• Escolha uma hospedagem 
• Amazon AWS (grátis 1 ano) 
• Heroku (plano básico grátis) 
• DigitalOcean ($5/mês) 
• http://j.mp/vpsdigi 
• Outras alternativas mais baratas!
Marketing 
• Launch 
• Feedback 
• Analytics 
• Interação 
• Iterate & Pivot 
• Growth Hacking 
• Sales Pipeline (B2B)
Fail Fast, Fail Cheap 
Não deu certo? Fecha a parte pra outra.
De Zero à Web com Python e Django

Mais conteúdo relacionado

Mais procurados

Python na Web
Python na WebPython na Web
Python na Web
Igor Sobreira
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
ricobl
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
Adriano Petrich
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com python
Bruno Rocha
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas Aplicações
Marcos Thomaz
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
Marcos Thomaz
 
Treinamento Básico de Django
Treinamento Básico de DjangoTreinamento Básico de Django
Treinamento Básico de Django
Leandro Zanuz
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
Alvaro Oliveira
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do Google
Luciano Ramalho
 
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
 
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
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o Python
Osvaldo Santana Neto
 
Python para Programadores
Python para ProgramadoresPython para Programadores
Python para Programadores
Osvaldo Santana Neto
 
Java primeiros-passos
Java primeiros-passosJava primeiros-passos
Java primeiros-passos
Leide Sayuri Ogasawara
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com Python
Giancarlo Silva
 
Python 3k
Python 3kPython 3k
Postgresql + Python = Power!
Postgresql + Python = Power!Postgresql + Python = Power!
Postgresql + Python = Power!
Juliano Atanazio
 
Python WTFAQ?
Python WTFAQ?Python WTFAQ?
Python WTFAQ?
Osvaldo Santana Neto
 
Canivete python
Canivete pythonCanivete python
Canivete python
Anderson Dantas
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011
Emerson Macedo
 

Mais procurados (20)

Python na Web
Python na WebPython na Web
Python na Web
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com python
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas Aplicações
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
Treinamento Básico de Django
Treinamento Básico de DjangoTreinamento Básico de Django
Treinamento Básico de Django
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do Google
 
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!
 
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
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o Python
 
Python para Programadores
Python para ProgramadoresPython para Programadores
Python para Programadores
 
Java primeiros-passos
Java primeiros-passosJava primeiros-passos
Java primeiros-passos
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com Python
 
Python 3k
Python 3kPython 3k
Python 3k
 
Postgresql + Python = Power!
Postgresql + Python = Power!Postgresql + Python = Power!
Postgresql + Python = Power!
 
Python WTFAQ?
Python WTFAQ?Python WTFAQ?
Python WTFAQ?
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011
 

Destaque

Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
Osvaldo Santana Neto
 
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
 
Aprendendo python
Aprendendo pythonAprendendo python
Aprendendo python
Victor Marcelino
 
Django - Lightning Talk - We Web Conf
Django - Lightning Talk - We Web ConfDjango - Lightning Talk - We Web Conf
Django - Lightning Talk - We Web Conf
Julio Cesar Eiras Melanda
 
Introdução ao Python com Django
Introdução ao Python com DjangoIntrodução ao Python com Django
Introdução ao Python com Django
Henrique Gabriel Gularte Pereira
 
Desenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJangoDesenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJango
Rafael Nunes
 
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público Federal
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público FederalSUAP: Caso de Sucesso utilizando Python e Django no Serviço Público Federal
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público Federal
Allyson Barros
 
Python 06
Python 06Python 06
Python 06
Bruno Catão
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem Python
Alex Tercete
 
Testes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e DjangoTestes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e Django
fabiocerqueira
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
Diemesleno Souza Carvalho
 
Aprendendo python 2a edição
Aprendendo python   2a ediçãoAprendendo python   2a edição
Aprendendo python 2a edição
CAVN/UFPB III
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
Igor Sobreira
 
Extraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonExtraindo dados públicos na marra com Python
Extraindo dados públicos na marra com Python
Pedro Valente
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolso
Jean Lopes
 

Destaque (15)

Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Aprendendo python
Aprendendo pythonAprendendo python
Aprendendo python
 
Django - Lightning Talk - We Web Conf
Django - Lightning Talk - We Web ConfDjango - Lightning Talk - We Web Conf
Django - Lightning Talk - We Web Conf
 
Introdução ao Python com Django
Introdução ao Python com DjangoIntrodução ao Python com Django
Introdução ao Python com Django
 
Desenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJangoDesenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJango
 
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público Federal
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público FederalSUAP: Caso de Sucesso utilizando Python e Django no Serviço Público Federal
SUAP: Caso de Sucesso utilizando Python e Django no Serviço Público Federal
 
Python 06
Python 06Python 06
Python 06
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem Python
 
Testes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e DjangoTestes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e Django
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Aprendendo python 2a edição
Aprendendo python   2a ediçãoAprendendo python   2a edição
Aprendendo python 2a edição
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
Extraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonExtraindo dados públicos na marra com Python
Extraindo dados públicos na marra com Python
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolso
 

Semelhante a De Zero à Web com Python e Django

"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ..."Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
Cesar Augusto Nogueira
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
Cleyson de Sousa Lima
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado Servidor
Mario Guedes
 
O Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com PythonO Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com Python
Marinho Brandão
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de software
Felipe
 
O que você NÃO aprendeu sobre Programação Orientada a Objetos
O que você NÃO aprendeu sobre Programação Orientada a ObjetosO que você NÃO aprendeu sobre Programação Orientada a Objetos
O que você NÃO aprendeu sobre Programação Orientada a Objetos
Danilo Sato
 
[MTC 2021] Conversa sobre shift left - Douglas Cardoso
[MTC 2021] Conversa sobre shift left - Douglas Cardoso[MTC 2021] Conversa sobre shift left - Douglas Cardoso
[MTC 2021] Conversa sobre shift left - Douglas Cardoso
minastestingconference
 
JavaScript - A Linguagem
JavaScript - A LinguagemJavaScript - A Linguagem
JavaScript - A Linguagem
Sérgio Souza Costa
 
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Paulino Michelazzo
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
Rudá Moura
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
Gregorio Melo
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POO
Wesley Lemos
 
OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014
Marcio Marchini
 
Testes Automatizados e o iOS
Testes Automatizados e o iOSTestes Automatizados e o iOS
Testes Automatizados e o iOS
Ricardo Valeriano
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
Paulino Michelazzo
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
lucianacmota
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript
Carlos Santos
 
Python MongoDB no MongoSP
Python MongoDB no MongoSPPython MongoDB no MongoSP
Python MongoDB no MongoSP
Christiano Anderson
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noite
Comunidade NetPonto
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
Luciano Ramalho
 

Semelhante a De Zero à Web com Python e Django (20)

"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ..."Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado Servidor
 
O Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com PythonO Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com Python
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de software
 
O que você NÃO aprendeu sobre Programação Orientada a Objetos
O que você NÃO aprendeu sobre Programação Orientada a ObjetosO que você NÃO aprendeu sobre Programação Orientada a Objetos
O que você NÃO aprendeu sobre Programação Orientada a Objetos
 
[MTC 2021] Conversa sobre shift left - Douglas Cardoso
[MTC 2021] Conversa sobre shift left - Douglas Cardoso[MTC 2021] Conversa sobre shift left - Douglas Cardoso
[MTC 2021] Conversa sobre shift left - Douglas Cardoso
 
JavaScript - A Linguagem
JavaScript - A LinguagemJavaScript - A Linguagem
JavaScript - A Linguagem
 
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POO
 
OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014
 
Testes Automatizados e o iOS
Testes Automatizados e o iOSTestes Automatizados e o iOS
Testes Automatizados e o iOS
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript
 
Python MongoDB no MongoSP
Python MongoDB no MongoSPPython MongoDB no MongoSP
Python MongoDB no MongoSP
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noite
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
 

Mais de Osvaldo Santana Neto

Basic Brainf*ck
Basic Brainf*ckBasic Brainf*ck
Basic Brainf*ck
Osvaldo Santana Neto
 
Contruindo um Framework Web de Brinquedo só com Python
Contruindo um Framework Web de Brinquedo só com PythonContruindo um Framework Web de Brinquedo só com Python
Contruindo um Framework Web de Brinquedo só com Python
Osvaldo Santana Neto
 
A Web é uma API
A Web é uma APIA Web é uma API
A Web é uma API
Osvaldo Santana Neto
 
Dave Thomas - Agile is Dead (GOTO 2015)
Dave Thomas - Agile is Dead (GOTO 2015)Dave Thomas - Agile is Dead (GOTO 2015)
Dave Thomas - Agile is Dead (GOTO 2015)
Osvaldo Santana Neto
 
Olist Architecture v2.0
Olist Architecture v2.0Olist Architecture v2.0
Olist Architecture v2.0
Osvaldo Santana Neto
 
Advanced Brainf*ck
Advanced Brainf*ckAdvanced Brainf*ck
Advanced Brainf*ck
Osvaldo Santana Neto
 
Corrigindo Bugs no CPython
Corrigindo Bugs no CPythonCorrigindo Bugs no CPython
Corrigindo Bugs no CPython
Osvaldo Santana Neto
 
Como funciona um time remoto de desenvolvimento - Caipyra 2018
Como funciona um time remoto de desenvolvimento - Caipyra 2018Como funciona um time remoto de desenvolvimento - Caipyra 2018
Como funciona um time remoto de desenvolvimento - Caipyra 2018
Osvaldo Santana Neto
 
Escalando times através do trabalho remoto
Escalando times através do trabalho remotoEscalando times através do trabalho remoto
Escalando times através do trabalho remoto
Osvaldo Santana Neto
 
Plataforma distribuída de Microserviços ou, como a Olist funciona
Plataforma distribuída de Microserviços ou, como a Olist funcionaPlataforma distribuída de Microserviços ou, como a Olist funciona
Plataforma distribuída de Microserviços ou, como a Olist funciona
Osvaldo Santana Neto
 
Real Life Hackers @ PechaKucha 20x20
Real Life Hackers @ PechaKucha 20x20Real Life Hackers @ PechaKucha 20x20
Real Life Hackers @ PechaKucha 20x20
Osvaldo Santana Neto
 
Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)
Osvaldo Santana Neto
 
Como me tornei um empreendedor pythonista
Como me tornei um empreendedor pythonistaComo me tornei um empreendedor pythonista
Como me tornei um empreendedor pythonista
Osvaldo Santana Neto
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
Osvaldo Santana Neto
 
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Osvaldo Santana Neto
 
Ludeos - Venda seu conteúdo online (how it works)
Ludeos - Venda seu conteúdo online (how it works)Ludeos - Venda seu conteúdo online (how it works)
Ludeos - Venda seu conteúdo online (how it works)
Osvaldo Santana Neto
 
App Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horasApp Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horas
Osvaldo Santana Neto
 
Programação RAD com Python
Programação RAD com PythonProgramação RAD com Python
Programação RAD com Python
Osvaldo Santana Neto
 
Desenvolvimento RAD com Python (Fenasoft)
Desenvolvimento RAD com Python (Fenasoft)Desenvolvimento RAD com Python (Fenasoft)
Desenvolvimento RAD com Python (Fenasoft)
Osvaldo Santana Neto
 
Curso Python for S60
Curso Python for S60Curso Python for S60
Curso Python for S60
Osvaldo Santana Neto
 

Mais de Osvaldo Santana Neto (20)

Basic Brainf*ck
Basic Brainf*ckBasic Brainf*ck
Basic Brainf*ck
 
Contruindo um Framework Web de Brinquedo só com Python
Contruindo um Framework Web de Brinquedo só com PythonContruindo um Framework Web de Brinquedo só com Python
Contruindo um Framework Web de Brinquedo só com Python
 
A Web é uma API
A Web é uma APIA Web é uma API
A Web é uma API
 
Dave Thomas - Agile is Dead (GOTO 2015)
Dave Thomas - Agile is Dead (GOTO 2015)Dave Thomas - Agile is Dead (GOTO 2015)
Dave Thomas - Agile is Dead (GOTO 2015)
 
Olist Architecture v2.0
Olist Architecture v2.0Olist Architecture v2.0
Olist Architecture v2.0
 
Advanced Brainf*ck
Advanced Brainf*ckAdvanced Brainf*ck
Advanced Brainf*ck
 
Corrigindo Bugs no CPython
Corrigindo Bugs no CPythonCorrigindo Bugs no CPython
Corrigindo Bugs no CPython
 
Como funciona um time remoto de desenvolvimento - Caipyra 2018
Como funciona um time remoto de desenvolvimento - Caipyra 2018Como funciona um time remoto de desenvolvimento - Caipyra 2018
Como funciona um time remoto de desenvolvimento - Caipyra 2018
 
Escalando times através do trabalho remoto
Escalando times através do trabalho remotoEscalando times através do trabalho remoto
Escalando times através do trabalho remoto
 
Plataforma distribuída de Microserviços ou, como a Olist funciona
Plataforma distribuída de Microserviços ou, como a Olist funcionaPlataforma distribuída de Microserviços ou, como a Olist funciona
Plataforma distribuída de Microserviços ou, como a Olist funciona
 
Real Life Hackers @ PechaKucha 20x20
Real Life Hackers @ PechaKucha 20x20Real Life Hackers @ PechaKucha 20x20
Real Life Hackers @ PechaKucha 20x20
 
Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)
 
Como me tornei um empreendedor pythonista
Como me tornei um empreendedor pythonistaComo me tornei um empreendedor pythonista
Como me tornei um empreendedor pythonista
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
 
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
 
Ludeos - Venda seu conteúdo online (how it works)
Ludeos - Venda seu conteúdo online (how it works)Ludeos - Venda seu conteúdo online (how it works)
Ludeos - Venda seu conteúdo online (how it works)
 
App Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horasApp Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horas
 
Programação RAD com Python
Programação RAD com PythonProgramação RAD com Python
Programação RAD com Python
 
Desenvolvimento RAD com Python (Fenasoft)
Desenvolvimento RAD com Python (Fenasoft)Desenvolvimento RAD com Python (Fenasoft)
Desenvolvimento RAD com Python (Fenasoft)
 
Curso Python for S60
Curso Python for S60Curso Python for S60
Curso Python for S60
 

De Zero à Web com Python e Django

  • 1. De Zero à Web com Python e Django Um guia para o empreendedorismo digital
  • 2. Osvaldo Santana Neto • https://osantana.me • Python e Django • Empreendedor em "modo de espera” • Side Projects • Bootstrapping • Titans Solutions • Empresa de SP • Trabalho Remoto
  • 3. Empreendedorismo Se é difícil de soletrar é difícil de fazer?
  • 4. Fui enganado! Cadê o Python e o Django? Calma... Calma... A gente chega lá...
  • 6. Você precisará de... • Uma idéia válida para executar • Algum dinheiro (~R$100) • E tempo para trabalhar no projeto
  • 7. Ideias • Quando esbarrar em um problema anote em um papel • Revisite o problema proponha soluções (ideias) • Faça uma planilha para classificar as ideias • Escolha uma e valide (Business Model Canvas e entrevistas) • Ideias simples são mais poderosas • Não se distraia com ideias novas. Anote-as.
  • 8. Ideia & Execução • Ideias são um multiplicador de valor da execução • A execução é que tem valor • Ideia boa e bem executada é o melhor cenário • http://sivers.org/multiply • Validação de ideias • Conheça o mercado • Tenha "paixão"
  • 9. Como conseguir dinheiro? Inverta o raciocínio: O que eu consigo fazer com o dinheiro que tenho?
  • 10. Como conseguir tempo? Inverta o raciocínio: O que eu consigo fazer com o tempo que tenho?
  • 11. Quem quer faz. Quem não quer inventa desculpas
  • 12. Palavras Chaves • Bootstrapping • Side-Project • Passive Income • Cuidado com picaretagem! • Minimum Viable Product • Cuidado com: • Eventos de startup, busca por investimento/ financiamento, …
  • 13. Execução Passo a Passo • Aprenda Python & Django  • Escolha um nome • Registre um domínio (~R$30) • Escolha uma hospedagem (grátis~$9/mês) • Quickstartup (grátis~$49) • Tráfego (grátis~infinito) • Feedback
  • 14. Python & Django • https://osantana.me/pydjango • Python - Linguagem • Guido van Rossum • Lançada em 1989 • Monty Python • Django - Framework Web • Jacob K. Moss & Adrian Holovaty • Lançado em 2003 • Django Reinhardt
  • 15. Python • Linguagem de uso geral • Web, Mobile, Desktop, … • Multiplataforma • Unix, Linux, OS X, e até a porcaria do Windows • OOP • Suporte a código procedural e funcional • Interpretada (com compilação transparente de bytecode) • Linguagem aberta / Open Source
  • 16. #!/usr/bin/env python3 # coding: utf-8 # programa1.py - Primeiro programa """ Importa o módulo random e sorteia um número inteiro entre 1 e 100 """ import random numero = random.randint(1, 100) escolha = 0 tentativas = 0 print("Acerte o número que sorteei com o menor número de tentativas.") while escolha != numero: escolha = int(input("Digite um número inteiro entre 1 e 100: ")) tentativas += 1 if escolha < numero: print("O número %s é menor que o sorteado." % (escolha,)) elif escolha > numero: print("O número %s é maior que o sorteado." % (escolha,)) print("Parabéns! Você acertou o número com %s tentativas." % (tentativas,))
  • 17. #!/usr/bin/env python3 # coding: utf-8 class No(object): def __init__(self, questao=None, sim=None, nao=None): self._sim = sim self._nao = nao self._questao = questao def start(self): if self.ask("Esse animal {}".format(self._questao), sn=True): self._sim = self._sim.start() else: self._nao = self._nao.start() return self def ask(self, questao, sn=False): resposta = "" while resposta == "": resposta = input("{}? {}".format(questao, "(s/n) " if sn else "")) return resposta if not sn else (resposta[0].lower() == "s")
  • 18. class Animal(No): def __init__(self, nome): super(Animal, self).__init__(nome) self._nome = nome def start(self): if not self.ask("É um(a) {}".format(self._nome), sn=True): animal = self.ask("Qual é o animal") questao = self.ask("O que um {} faz que {} não faz".format(animal, self._nome)) return No(questao, Animal(animal), self) print("Acertei!") return self def main(): raiz = No("vive na água", Animal("baleia"), Animal("macaco")) while True: raiz.start() if not raiz.ask("Jogar novamente", sn=True): break if __name__ == '__main__': main()
  • 19. $ python3 animais.py Esse animal vive na água? (s/n) n É um(a) macaco? (s/n) n Qual é o animal? cachorro O que um cachorro faz que macaco não faz? é domesticado Jogar novamente? (s/n) s Esse animal vive na água? (s/n) n Esse animal é domesticado? (s/n) s É um(a) cachorro? (s/n) s Acertei!
  • 20. Django • Framework Web Ágil • DRY - Don’t Repeat Yourself • MVC ou MTV (Model/View/Controller, Model/Template/ View) • ORM ➡️ Banco de Dados Relacional • Postgres, MySQL, Oracle, … • Instagram, Pinterest, Disqus, …
  • 21. # coding: utf-8 from django.db import models from django.core.urlresolvers import reverse from django.utils.translation import ugettext_lazy as _ CONTACT_STATUS = ( ("N", _("New")), ("O", _("Ongoing")), ("R", _("Resolved")), ("C", _("Closed")), ("I", _("Invalid")), ) class Contact(models.Model): status = models.CharField(_("status"), max_length=1, choices=CONTACT_STATUS, default="N") created_at = models.DateTimeField(_("created at"), auto_now_add=True) updated_at = models.DateTimeField(_("updated at"), auto_now=True) name = models.CharField(_("name"), max_length=255) email = models.EmailField(_("email"), max_length=255) phone = models.CharField(_("phone"), max_length=100, blank=True) message = models.TextField(_("message")) @property def admin_url(self): return reverse("admin:contacts_contact_change", args=(self.pk,))
  • 22. # coding: utf-8 from django.contrib import admin from .models import Contact class ContactAdmin(admin.ModelAdmin): list_display = ('updated_at', 'name', 'email', 'phone', 'status') list_display_links = ('updated_at', 'name', 'email', 'phone') list_editable = ("status",) list_filter = ('status',) search_fields = ('name', 'email') ordering = ("-updated_at",) admin.site.register(Contact, ContactAdmin)
  • 29. Ação! • Escolha um nome (domínio livre) • Registre um domínio • http://registro.br/ ou https://gandi.net • Escolha uma hospedagem • Amazon AWS (grátis 1 ano) • Heroku (plano básico grátis) • DigitalOcean ($5/mês) • http://j.mp/vpsdigi • Outras alternativas mais baratas!
  • 30. Marketing • Launch • Feedback • Analytics • Interação • Iterate & Pivot • Growth Hacking • Sales Pipeline (B2B)
  • 31. Fail Fast, Fail Cheap Não deu certo? Fecha a parte pra outra.