-
Criar uma conta gratuita no Paiza Cloud. Já no Paiza Cloud, criar um server com Django.
-
Iniciar o projeto:
django-admin startproject devweb
-
Entrar na pasta do projeto criada:
cd devweb
-
No settings.py adicionar:
ALLOWED_HOSTS=['*']
-
No nível do projeto rodar:
python3 manage.py runserver
-
Criar um app:
python3 manage.py startapp agenda
-
No settings.py adicionar:
INSTALLED_APPS = [ ... 'agenda.apps.AgendaConfig', ]
-
Na pasta do app (agenda), criar o arquivo urls.py - Colar o texto passado - agenda/urls.py
-
Na pasta do projeto, dentro da pasta devweb, mesmo nível do setting.py, alterar o arquivo urls.py - Colar o texto passado - devweb/urls.py
-
Na pasta do app (agenda) acessar o views.py para criar a função index - Colar o texto passado - views_01.py
-
No nível do projeto rodar:
python3 manage.py runserver
-
Na views.py comentar o
return HttpResponse
da função index e descomentar oreturn render()
que está lá, para assim a views redirecionar pro arquivo agenda.html -
No nível do projeto rodar:
python3 manage.py runserver
-
ERROR - O que houve? - Precisamos criar a pasta templates e informar ao settings.py onde esses arquivos estão
-
No nível do projeto criar a pasta templates. Dentro dessa pasta, criar o arquivo agenda.html - Colar o texto passado - agenda_01.html
-
No settings.py , no DIR da variável TEMPLATES, substituir:
- Ubuntu/Mac:
'DIRS': [os.path.join(BASE_DIR, 'templates')],
- Debian:
'DIRS': [ BASE_DIR / 'templates', ],
- Ubuntu/Mac:
-
No nível do projeto rodar:
python3 manage.py runserver
- TUDO OK? Você deve visualizar o form agora -
Carregando arquivos estáticos (css, js...):
- Criar no nível do projeto uma pasta chamada static e dentro dela o arquivo style.css - Colar o texto passado - style.css
- Configurar o settings.py (essa parte varia de acordo com o SO utilizado) para apontar para os arquivos estáticos, no final do arquivo adicione:
- Ubuntu:
STATIC_URL = '/static/'
,STATICFILES_DIRS = [os.path.join(BASE_DIR, 'site/static'),]
eSTATIC_ROOT = os.path.join(BASE_DIR, 'static')
- Ubuntu (alternativa flat):
STATIC_URL = '/home/ubuntu/devweb/site/static/'
,STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),]
eSTATIC_ROOT = os.path.join(BASE_DIR, '/home/ubuntu/devweb/site/static')
- Debian:
STATIC_URL = str(BASE_DIR / 'site/static') + '/'
,STATICFILES_DIRS = [BASE_DIR / 'static',]
eSTATIC_ROOT = str(BASE_DIR / 'site/static/')
- Ubuntu:
- No nível do projeto, rodar o comando:
python3 manage.py collectstatic
- Na primeira linha do agenda.html adicionar a tag:
{% load static %}
- Ainda no html, dentro do head importar o arquivo css:
<link rel="stylesheet" href="{% static 'style.css' %}">
-
TUDO OK? Você deve visualizar o template bonito agora
-
Criar o model: dentro da pasta 'agenda' editar o arquivo models.py - Colar o texto passado - agenda/models.py
-
Após criar o model, rodar os seguintes comandos:
python3 manage.py makemigrations
python3 manage.py migrate
-
Focando no form do html agora, precisamos persistir os dados quando enviados.
- Altere o method do form para
method="post"
- Adicione a tag
{% csrf_token %}
dentro do form.
- Altere o method do form para
-
Focando na view.py agora, é preciso importar o model para manipularmos os objetos e exibí-los no template. Como nesse exemplo faremos tudo no mesmo arquivo html, a views index será responsável tanto por salvar os contatos como por exibir os contatos salvos.
-
Para retornar os contatos salvos, crie uma variável 'contatos' que irá receber os objetos existentes da aplicação da seguinte forma:
contatos = Contato.objects.all()
. Para enviar essa variável para o template, basta adicioná-la no formato de um dicionário como terceiro parâmetro dorender()
- Colar o texto passado - views_02.py -
No agenda.html, utilizaremos tags html de listagem para exibir os objetos salvos. Para tal, faremos isso de forma dinâmica utilizando as Template Tags do Django. Iremos utilizar um 'for' para exibir cada um dos objetos - Colar o texto passado - agenda_02.html
-
Para persistir os dados enviados pelo 'form' no banco de dados, primeiro precisamos verificar se o
request
da view é do tipoPOST
. Caso seja, criamos um objeto com os dados do 'form' e retornamos a lista de objetos existentes - Colar o texto passado - views_03.py -
Parabéns, você concluiu o Workshop! Agora você sabe fazer uma aplicação Django com registro de objetos e listagem dinâmica dos mesmos no template!!!
Considerando que agora a agenda deve registrar também a cidade dos contatos, realize as alterações necessárias para:
- Informar a cidade no registro do contato
- Persistir a informação da cidade
- Listar, além de nome e telefone, a cidade
O Django oferece uma área administrativa http://localhost:8000/admin/
. Caso tenha reparado, existe um arquivo dentro no app agenda chamado admin.py. É nesse arquivo que você configura o que quer exibir na área administrativa.
- Atividade extra:
- Criar um super-usuário no Django para acessar essa área dica: usar o comando do Django no terminal
- Configurar o admin.py para exibir os contatos na area administrativa
Esse Workshop foi realizado como uma atividade avaliativa da disciplina Desenvolvimento Web do curso Residência em Software SJBA oferecido pela UFBA em 2020. Workshop realizado em 21/12/2020, alunos responsáveis: Amanda Chagas de Oliveira e Reno Costa Alencar.