Skip to content

Repositório destinado para a realização do workshop de Django oferecido pela Semana de Sistemas de Informação

Notifications You must be signed in to change notification settings

petsi-each/workshop-django2

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 

Repository files navigation


Workshop de Introdução ao Django
Owlficinas (PET-SI) e Semana de Sistemas de Informação (SSI)

🎯 Objetivo

Este workshop foi organizado pela Semana de Sistemas de Informação (SSI) com apoio do PET-SI para os membros de Infraestrutura da SSI e estudantes da EACH-USP com o pré-requisito de conhecimentos em lógica de programação.

Ao finalizar o curso, você:

  • Criará sua primeira API utilizando Django
  • Implementará seu primeiro banco de dados
  • Entenderá sobre a arquitetura de servidores e clientes



📑 Sumário de tópicos

  1. Instalar ferramentas
    1. Python3
    2. Django
  2. Servidores Web
  3. Projeto e Aplicação
    1. 💡 Desafio: criar um projeto Django
    2. 💡 Desafio: criar uma aplicação Django
  4. Criando primeiro fluxo
    1. 💡 Desafio: Criar uma view
    2. 💡 Desafio: Criar uma url
  5. Banco de dados
    1. 💡 Desafio: Criação das tabelas
  6. Fluxo com parâmetros
    1. 💡 Desafio: criar fluxo com parâmetros
  7. CRUD
    1. 💡 Desafio: Read
    2. 💡 Desafio: Create
    3. 💡 Desafio: Delete
    4. 💡 Desafio: Update
  8. Comandos mais utilizados
    1. Rodar projeto Django
    2. Trocar de branch
    3. Verificar alterações



💻 Conteúdo

🔌 1. Instalar ferramentas

Python

Verificar se já veio instalado

python --version

Django

Instalar:

python -m pip install Django

Verificar se foi instalado:

python -m django --version

☁️ 2. Servidores Web

image

Comunicação: por meio de troca de mensagens


🔔 3. Projeto e Aplicação

Projeto Django: um conjunto de aplicações. Aplicações: serviços que vão estar rodando no servidor.

Criando projeto Django

🌱 Branch: etapa0

django-admin startproject saphira

Diretórios e arquivos criados:

Estrutura de repositórios criada

Rodar projeto: Abrir diretório do arquivo manage.py

cd /workspaces/workshop-django/saphira/

``

python manage.py runserver

Criando uma Aplicação

🌱 Branch: etapa1

python manage.py startapp api

Estrutura de diretórios criada:

Estrutura de repositórios criada

Principais arquivos: urls e views

Configurações em saphira/settings.py


➿ 4. Criando primeiro fluxo

🌱 Branch: etapa2

Criar uma view

Arquivo: api/views.py

import datetime

from django.http import HttpResponse, JsonResponse

def get_datetime(request):
    return JsonResponse({"datetime": datetime.datetime.utcnow()})

Criar url

Arquivo: api/urls.py

from django.urls import path

from . import views

urlpatterns = [
    path("", views.get_datetime, name="get_datetime"),
]

Configurações em saphira/urls.py

from django.urls import include
path("api/", include("api.urls"))

🎲 5. Banco de dados

🌱 Branch: etapa3

As configurações do banco de dados estão em saphira/settings.py

Adicionar aplicação api no projeto Saphira settings.py:

api.apps.ApiConfig

Tabelas

Adicionar tabelas do banco de dados: api/models.py

from django.db import models

class Usuario(models.Model):
    nomeCompleto = models.CharField(max_length=200)
    email = models.EmailField()
    cpf = models.CharField(max_length=14)

class Palestra(models.Model):
    titulo = models.CharField(max_length=200)
    descricao = models.TextField()

class Presenca(models.Model):
    usuario = models.ForeignKey(Usuario, on_delete=models.CASCADE)
    palestra = models.ForeignKey(Palestra, on_delete=models.CASCADE)
    presencial = models.BooleanField(default=False)

2

Make migration: informar ao Django que foram realizadas alterações no banco de dados.

python manage.py makemigrations api

Ver alterações feita pela migração:

python3 manage.py sqlmigrate api 0001

Fazer migração:

python manage.py migrate

➿ 6. Fluxo com parâmetros

🌱 Branch: etapa4

Adicionar uma nova url api/urls.py

path("texto/<texto>", views.get_texto, name="get_texto")

Adicionar uma nova view views.py

def get_texto(request, texto):
	return HttpResponse("O texto escolhido foi '{}'".format(texto))

🖱️ 7. CRUD

Read

🌱 Branch: etapa5

Objetivo: pegar todos os usuários cadastrados no banco de dados

Adicionar uma nova url api/urls.py

path("usuarios", views.get_usuarios, name="get_usuarios")

Adicionar uma nova view api/views.py

from .models import *


def get_usuarios(request):
    usuarios = Usuario.objects.all().values('nomeCompleto', 'cpf', 'email')

    resposta = "= BANCO DE DADOS =\n"
    for usuario in usuarios:
        resposta += f"Nome: {usuario['nomeCompleto']}, CPF: {usuario['cpf']}, E-mail: {usuario['email']}\n"

    return HttpResponse(resposta, content_type="text/plain")

Create

🌱 Branch: etapa6

Request Parameters

/api?email=franciscoogjr@usp.br&nomeCompleto=Francisco%20Gomes

Adicionar uma nova url api/urls.py

path("usuario/add", views.add_usuario, name="add_usuario")

Adicionar uma nova view api/views.py

def add_usuario(request):
    nomeCompleto = request.GET['nomeCompleto']
    email = request.GET['email']
    cpf = request.GET['cpf']

    novo_usuario = Usuario(nomeCompleto=nomeCompleto, email=email, cpf=cpf)

    novo_usuario.save()  

    return JsonResponse({'mensagem':f'{nomeCompleto} cadastrado'})

Nova rota:

api/usuario/add?nomeCompleto=&email=&cpf=

Delete

🌱 Branch: etapa7

path("usuario/delete/<cpf>", views.delete_usuario, name="delete_usuario")

Adicionar uma nova view api/views.py

def delete_usuario(request, cpf):
    usuario = Usuario.objects.get(cpf=cpf)

    nomeCompleto = usuario.nomeCompleto

    usuario.delete()

    return HttpResponse("Usuario {} deletado com sucesso".format(nomeCompleto))

Update

🌱 Branch: etapa8

path("usuario/update/<cpf>", views.update_usuario, name="update_usuario")
def update_usuario(request, cpf):
    novo_email = request.GET['email']

    Usuario.objects.filter(cpf=cpf).update(email=novo_email)

    return HttpResponse("Dados do usuario atualizado")

⌨️ Comandos mais utilizados

Rodar projeto Django

Entrada no diretório do arquivo manage.py:

cd /workspaces/workshop-django/saphira/

Comando runserver ``

python manage.py runserver

Trocar de branch

git checkout <nome_da_branch>

Verificar alterações

git diff

📚 Referências e materiais complementares

About

Repositório destinado para a realização do workshop de Django oferecido pela Semana de Sistemas de Informação

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published