Minicurso de Django - Desenvolvimento ágil web com Django e Python

  • View
    95

  • Download
    7

Embed Size (px)

Transcript

  • DESENVOLVIMENTO WEB COM

    Vinicius Coelhovncs.coelho@gmail.com

    Guilherme Garciaguilesgarcia@gmail.com

  • Introduo ao Python

    1. Sintaxe2. Variveis3. Loops4. Funes5. Orientao a objetos

    2 Tpicos abordadosDjango e Projeto de Microblog

    1. Criao de projetos2. Criao de aplicaes3. Criao de classes4. Relacionamento entre classes5. Criao de urls6. Criao de views7. Criao de templates

  • 3

    POR QU USAR O DJANGO?

    Desenvolvimento gil Orientado a objetos Fcil gerenciamento de Banco de dados Possui painel administrativo com diversas funes Possui uma comunidade colaborativa muito ativa

    O que Django? Por qu usar?SITES QUE USAM DJANGO

    Conjunto de ferramentas em Python para agilizar o desenvolvimento web.

  • 4 Simplicidade do Python

    public class OlaMundo { public static void main(String[] args) { System.out.println("Ol mundo"); }}

    print ('Ol Mundo!')

    Java Python

  • 5 Sintaxe

    if :

    elif :

    else:

    if (condio) {

    ;

    }

    else if (condio) {

    ;

    }

    else {

    ;

    }

  • 6 Variveis

    numero = 123

    decimal = 10.5

    palavra = Ol Mundo!

    booleano = True

    uma posio na memria que armazena um valor

    No preciso declarar o tipo

    o contedo da varivel determina o seu tipo

  • 7 Condies

    if numero == 0:

    print(O nmero zero)

    elif numero % 2 == 0:

    print('Par')

    else:

    print('Impar')

    if Se o nmero for igual a zero, informar que o nmero igual a zero.

    elif Seno se o nmero tiver resto igual a zero, o nmero par.

    else Caso contrrio, o nmero mpar.

  • 8 OperadoresAritimticos Comparao Lgicos

    Igual==

    Diferente!=

    Maior que>

    Menor que=

    Menor ou igual

  • 9 Funes

    def soma(x, y):

    return x + y

    def parametro_opcional(nome=None):

    print(nome)

    resultado = soma(2,5)

    Funo um bloco de cdigo que realiza uma tarefa especfica.

    Evita repetio: Podemos criar uma nica

    funo e chamar ela diversas vezes no cdigo.

    definida por def;

    Uma funo pode: Receber parametros Retornar valores

  • So conjuntos ordenados de valores, onde cada valor identificado por um ndice.

    O ndice o nmero relativo posio do dado que queremos acessar:

    10 Listas

    # Declaraolista_vazia = list()

    numeros = [2, 1, 3, 5, 4];

    palavras = ["abc", "b", "cachorro"]

    lista_mista = ['gato', 'bola', 1997, 2000];

    # Acessoprint (palavras[2]) # cachorro

    2 1 3 5 4[1] [2] [3] [4] [5]

  • Listas utilizam inteiros como ndices.

    Dicionrios utilizam qualquer tipo de dados como ndice.

    dicionario[indice]

    Um dicionrio vazio declarado com o uso de dict( ) ou { }.

    11 Dicionrios

    # Declarao

    dict_vazio = dict()

    pessoa = {'nome': 'Maria', 'idade': 7}

    # Acesso

    print (pessoa['nome'])

    CHAVE VALOR

  • 12 Estruturas de repetio

    x = 0

    while x < 10:

    print (x)

    x += 1 # Aumenta de 1 em 1

    nomes = ['Joo', 'Maria', 'Bruno']

    for nome in nomes:

    print(nome)

    # Imprime de 0,...9

    for x in range(10):

    print(x)

    For While

  • Estratgia que visa facilitar a utilizao de conceitos da vida real na programao, utilizando classes para descrever estes conceitos e objetos para represent-los.

    No existe uma varivel do tipo pessoa. Como representamos pessoas no cdigo?

    13 Orientao a Objetos com Python

    Python

  • 14 Orientao a objetos com Python

    maria = Pessoa()

    maria.nome = 'Maria'

    maria.idade = 20

    maria.falar_nome()

    class Pessoa(object):

    nome = "" # caractersticas

    idade = 0 # caractersticas

    def falar_nome(self): # comportamento

    print (self.nome)

    Classe Objeto

  • As classes so as instrues de como deve ser um objeto.

    atributos da classe definem suas caractersticas

    mtodos definem o comportamento da classe.

    15 Classes

    class Jedi(object):sabreDeLuz = "Verde"

    def sacarSabreDeLuz(self):print ("Pssshhew")

    ATRIBUTO

    MTODO

  • Um objeto uma entidade criada de acordo com a classe, possuindo as informaes que desejarmos, podendo ser replicado sempre que necessrio.

    16 Objetos

    obiWan = Jedi()obiWan.corDoSabre = Azul

    yoda = Jedi()yoda.corDoSabre = Verde

    obiWan.sacarSabreDeLuz()yoda.sacarSabreDeLuz()

  • 17 Herana

    class Cao(object):def latir(self):

    print ("Au!")

    class Poodle(Cao):corDoPelo = ""

    class Viralata(Cao):pedigree = False

    COClasse genrica que serve como base

  • Uma classe possui como atributo um objeto de outra classe

    18 Agregao

    class Aluno(object):turma = None

    class Turma(object):nome = '201B'

    turma = Turma()aluno = Aluno()aluno.turma = turma

  • Escreva um programa.py que contem uma classe Pessoa com as seguintes informaes: nome, ano de nascimento, endereo. Alm disso, deve conter um mtodo para obter idade (idade = ano_nascimento - ano_atual).

    Em seguida, crie uma classe funcionrio que herda a classe pessoa e acrescenta as seguintes informaes: salario e cargo. Por fim, construa um funcionrio abaixo:

    19 Exerccio de Python

    Nome Ano nascimento

    Endereo Salario

    Joo Silva 1985 Santa Maria R$ 3.000

  • 20 Resultado exerccio

    funcionario = Funcionario()funcionario.nome = 'Joo Silva'funcionario.ano_nascimento = 1985funcionario.endereco = 'Santa Maria'funcionario.salario = 3000

    print(funcionario.obter_idade())

    #coding:utf-8class Pessoa(object):

    nome = endereco = ano_nascimento = 0

    def obter_idade(self): return 2016 - self.ano_nascimento

    class Funcionario(Pessoa): cargo = '''' salario = 0

    Classe Objeto

  • NO WINDOWS

    1. V at o site oficial do Python: www.python.org2. Baixe o installer da verso 2.7 de acordo com seu SO

    (64 ou 32 bits)3. Abra o Prompt de Comando e digite:

    21

    NO LINUX

    1. Abra o console e digite:

    pip install django

    sudo apt-get install python-pip

    sudo pip install django

    Instalando o Django

    http://www.python.org

  • Microblog onde os usurios podem publicar pequenos textos, seguir pessoas e curtir textos de outras pessoas.

    22 Projeto MicroblogDiagrama de Classes Casos de Uso

    Projeto: https://github.com/guilegarcia/Microblog

  • Um projeto Django feito por diversas aplicaes (apps).

    Devido a natureza modular do Django, um app pode ser transferido de um projeto a outro.

    23 Estrutura do Projeto

    Microblog

    Autor

    Posts

    PROJETO

    APPs

  • Pginas: (possuem entrada no urls.py, views.py e um template HTML ) Timeline Quem seguir Criar autor Criar post Login

    Links: (possuem entrada somente no urls.py e views.py) Sair Excluir conta Seguir usurio Unfollow Curtir post

    24 Contedo do Projeto

  • Vamos criar o nosso projeto chamado Microblog, digitando no console:

    25 Criando o projeto

    django-admin startproject Microblog

  • 26 Estrutura do projeto

    __init__.py

    settings.py (configuraes do projeto)

    urls.py (geralmente importa as urls das aplicaes)

    wsgi.py

    Microblog

    Microblog

  • Vamos criar a aplicao posts do nosso projeto Microblog.

    27 Criando a aplicao posts

    python manage.py startapp posts

  • 28 Estrutura da aplicao

    __init__.py

    admin.py

    models.py

    tests.py

    migrations

    posts

    urls.py (precisa criar)

    views.py

  • Crie as aplicaes utilizando o terminal e as adicione em INSTALLED_APPS no /Microblog/settings.py

    29 Criando as aplicaes

    INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'posts',)

  • 30 Arquitetura do Django

    ( (r^contato/$, blog.contato), (r^posts/$, blog.posts),)

    urls.py

    {% extends base.html%}

    {% block content %}

    {% for p in posts %} {{p.title}} {{p.content}} {% endfor %}

    {% endblock %}

    posts.html

    def posts(request): p=Post.objects.all() return render(request, posts.html. {posts:p})

    views.pyclass Post(Model): title=CharField(max_lenght=50) content=TextField() date=Datefield() cat=ForeignKey(Category) autor=CharField(max_lenght=50)

    class Category(Model): name=CharField()

    models.py

    Cliente

    Request

    Response

  • So classes que define os dados que sero trabalhados na aplicao.

    Cada classe uma tabela no banco de dados

    Classes importam de models.Model

    Possui diferentes tipos de atributos

    Nosso projeto tem duas Classes: Autor e Post

    31 Modelos /app/models.py

    from django.db import models

    class Pessoa(models.Model):nome =

    models.CharField(max_length=30)endereco = models.TextField()email = models.EmailField()

  • boolean = models.BooleanField()

    string = models.CharField()

    data = models.DateTimeField()

    email = models.EmailField()

    arquivo = models.FileField()

    numero_real = models.FloatField()

    numero_inteiro = models.IntegerField()

    32 Atributos das classes no Django

    imagem = models.ImageField()

    endereco_de_ip = models.IPAddressField()

    Inteiro_positivo = models.PositiveIntegerField()

    texto = models.TextField()

    url = models.URLField()

    outra_classe = models.ForeignKey()

    muitos_para_muitos = models.M