Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parte 1) Fazendo o Olá mundo #1

Open
huogerac opened this issue Jun 26, 2022 · 5 comments
Open

Parte 1) Fazendo o Olá mundo #1

huogerac opened this issue Jun 26, 2022 · 5 comments
Labels
question Further information is requested

Comments

@huogerac
Copy link
Owner

👉 Deixe um comentário, não importa se é dúvida, crítica ou sugestão! Vamos discutir aqui tudo que for possível sobre a Parte 1) Fazendo o Olá mundo usando Django

É muito importante que você não fique com dúvidas!

@huogerac huogerac added the question Further information is requested label Jun 26, 2022
@huogerac
Copy link
Owner Author

$ tree
├── db.sqlite3
├── manage.py
├── ola_mundo_django
│   ├── asgi.py
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   ├── views.py
│   └── wsgi.py
└── templates
    └── ola_mundo.html
#urls.py
from django.contrib import admin
from django.urls import path
from . import views 

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.ola_mundo),
]
#views.py
from django.http import HttpResponse
from django.shortcuts import render

def ola_mundo(request):
    # Responde um texto dentro do HTTP
    #return HttpResponse("Ola mundo")

    # Responde um arquivo HTML gerado pelo Django
    texto = "Olá Mundo!!!!! " * 4
    return render(request, "ola_mundo.html", {"texto": texto})
#settings.py
import os
from pathlib import Path

...

TEMPLATES = [
    {
        ...
        'DIRS': [
            os.path.join(BASE_DIR, './templates'),
        ],
        ...
    },
]

@GloBrito
Copy link

TypeError at /

context must be a dict rather than tuple.
Request Method: GET
http://127.0.0.1:8000/
4.0.5
TypeError
context must be a dict rather than tuple.
/home/gloriabrito/.local/lib/python3.8/site-packages/django/template/context.py, line 278, in make_context
/usr/bin/python
3.8.10
['/home/gloriabrito/Área de Trabalho/buser/django-pratica/ola_mundo_django', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/home/gloriabrito/.local/lib/python3.8/site-packages', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages']
Mon, 27 Jun 2022 15:09:21 +0000

@huogerac
Copy link
Owner Author

Passa o código da views.py

@GloBrito
Copy link

GloBrito commented Jun 27, 2022

Funcionou. Era uma vírgula após a chave do dicionário na views.py. Obrigada!!

@lukemariano
Copy link

Conteúdo extra de Python:

Como bagunçar uma lista em python:

import random

mylist = ["apple", "banana", "cherry"]
random.shuffle(mylist)

print(mylist)

Como escolher dois itens aleatórios de uma lista:

import random

mylist = ["apple", "banana", "cherry"]
print(random.choices(mylist,  k = 2))

-----> onde K é o número de elementos a serem selecionados na lista;

Parte 1 - Criando uma pasta para os exercícios:

Dica:

  • Organizem os projetos.
  • Escolham nomes adequados para os projetos;
  • Não coloquem caracteres especiais para o nome dos projetos;
  • Criem pastas diferentes para os conteúdos, assim será mais fácil e rápido encontrar seus projetos;
  • Tenha uma estrutura 'django-prática' dentro de um workspace próprio para o conteúdo de Django;
  • Tenha repositórios específicos para os exercícios de Django;
  • Acompanhe a documentação oficial do Django caso tenha dúvidas;

Primeiro passo:

  • Crie uma pasta no seu workspace para o projeto, por exemplo: "Django2022";
  • Dentro dessa pasta serão colocados todos os arquivos necessários para a realização da primeira prática;

Parte 2 - Criando nosso ambiente virtual:

Criando um ambiente virtual para utilizar o Django:

sudo apt-get update; sudo apt-get install -y aria2 build-essential libbz2-dev libffi-dev liblzma-dev libncurses5-dev \
        libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev llvm make tk-dev libxml2-dev libxmlsec1-dev \
        xz-utils zlib1g-dev python3-pip ;

        pip3 uninstall virtualenv
        sudo apt-get install -y python3-virtualenv

    DISCLAIMER: ------> a barra '\' significa o fim de um comando. Execute um de cada vez no terminal.
  • Comando para criar um ambiente virtual após a instalação(EXECUTAR NO TERMINAL VSCODE OU PYCHARM): virtualenv meu-1o-ambiente-virtual
  • É importante criar AMBIENTES VIRTUAIS para controlar a instalação de dependências e versões de cada projeto separadamente;
  • Faça a instalação dentro da pasta que você criou para o desenvolvimento do projeto.
  • Para acessar o ambiente virtual basta digitar o seguinte comando no terminal do VSCODE/PYCHARM: source meu-1o-ambiente-virtual/bin/activate .
  • Para desativar basta digitar: deactivate;

Parte 3 - Instalando o Django pelo ambiente virtual:

Passo 1:

  • Dentro do ambiente virtual, iremos utilizar o gerenciador de pacotes do Python, o PIP(Python Package Index) para instalar o Django;
  • Digite o comando: pip install Django dentro do seu ambiente virtual;
  • Se necessário, atualize a versão do PIP para que não ocorra nenhum erro nessa etapa com o seguinte comando: pip install -U pip --user
  • Digite o seguinte comando para verificar se o django foi instalado corretamente:
    django-admin
  • Se instalado corretamente, serão exibidos no terminal os subcomandos do django-admin disponíveis para utilização;

Parte 4 - Utilizando o Django-Admin:

Criando a pasta do projeto com subcomandos do Django-Admin:

  • Digite o seguinte comando comando para criar a pasta com os módulos a serem utilizados para a realização da atividade prática: django-admin startproject --help para descobrir o que se pode fazer com o comando;
  • Não esqueça de verificar se vocẽ está na pasta correta para criar seu primeiro projeto em Django;
  • Digitar o comando django-admin startproject nome_do_projeto para começar o seu primeiro projeto utilizando Django;
  • Com o comando startproject será criada uma pasta com conteúdo próprio gerado pelo framework;

Parte 5 - Utilizando o manage.py

Utilizando o manage.py:

  • O módulo manage.py é criado automaticamente em cada projeto Django. Ele faz a mesma coisa que, django-admin mas também define o DJANGO_SETTINGS_MODULE variável de ambiente para que aponte para o settings.py, arquivo do seu projeto;
  • Passo 1: digite o comando cd ola_mundo para poder executar o manage.py corretamente, pois ele estará dentro dessa pasta;
  • Passo 2 : ./manage.py --help para ver o que os parâmetros que podem ser passados para o módulo manage.py;
  • Passo 3: ./manage.py runserver ---> servidor que está rodando o django / gera uma página web para o django;
  • Utilizar o comando CTRL + CLICK no ip que irá aparecer para abrir o web template gerado pelo Django. Normalmente a url gerada pelo Django será a "http://127.0.0.1:8000/";
  • Pronto, a primeira etapa do projeto estará concluída;

----> Disclaimer: Pode ser que nessa etapa ocorra um erro relacionado ao "MIGRATIONS" do Django, mas não se desespere! Basta apenas digitar o comando que será exibido no terminal colorido de vermelho para instalar as dependências do banco de dados do Django e rodar o comando do manage.py novamente.

Parte 6 - Template do HTML Django:

Criando nosso HTML no Django:

  • Passo 1: Criar uma pasta chamada 'templates' fora da pasta ola_mundo que contém os arquivos gerados pelo Django e a partir dela criar o nosso arquivo "ola_mundo.html";
  • Passo 2: Criar o conteúdo da página para exibir nosso "Olá Mundo" com o bloco de códigos abaixo:
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Olá Mundo</title>
    </head>
    <body>
    <h1>{{texto}}</h1>
    </body>
    </html>
    

Parte 7 - Configurando o settings.py

Como configurar o settings.py para que assim o Django encontre nossa pasta 'templates' com nosso HTML:

  • Passo 1: acesse o módulo settings.py e importe o módulo "OS" para especificarmos o caminho da nossa pasta "templates" para o Django com o seguinte comando: import os no topo do módulo settings.py;
  • Passo 2: encontre a variável (lista) denominada "TEMPLATES" dentro do módulo settings.py e altere o valor da chave 'DIRS' conforme demonstrado abaixo:
    'DIRS': [
             os.path.join(BASE_DIR, './templates'),
        ],
    
  • logo a lista "TEMPLATES" do módulo settings.py deverá estar conforme demonstrado abaixo:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
             os.path.join(BASE_DIR, './templates'),
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
  • Mas lembre-se, somente a chave "DIRS" deve ser alterada, o resto da estrutura da lista irá manter-se a mesma;

Parte 8 - Implementando o nosso "OLÁ MUNDO":

Criando e configurando nossa primeira view.py:

  • Dentro da pasta ola_mundo que está dentro de outra pasta ola_mundo(que contém os módulos gerados pelo Django), crie um módulo denominado "views.py";
  • 1 passo: importe a função render do módulo shortcuts do django com o seguinte comando:
    from django.shortcuts import render
  • 2 passo: defina a função ola_mundo que recebera a nossa função especial "request" com o bloco de códigos abaixo:
    def ola_mundo(request):
       texto = "Olá Mundo!!!!! " * 4
       return render(request, "ola_mundo.html", {"texto": texto}) ---> agora a página web consegue ler variáveis nessa view
    
  • No bloco de código acima, definimos uma função chamada "ola_mundo" que recebe um objeto "request" --> Criamos uma variável denominada "texto" e atribuímos a ela a string "Olá Mundo!!!!!!" multiplicada 4 vezes, gerando assim uma concatenação dessa string com 4 strings iguais --> E como retorno dessa função definimos nossa página HTML contida na pasta templates criada anteriormente, que ao ser renderizada, receberá nossa variável texto como argumento passado no HTML;

Parte 9 - Configurando o módulo urls.py para acessar nossa view (ETAPA FINAL):

Views e URLs:

  • Cada view é responsável por fazer uma das duas coisas: devolver um objeto HttpResponse contendo o conteúdo para a página requisitada, ou levantar uma exceção como Http404. O resto é com você;
  • É hora de criar nossa primeira URL! Queremos que http://127.0.0.1:8000 / seja a página inicial do nosso projeto e apenas a string "Olá Mundo" definida no nosso módulo views.py;
    *Também queremos manter o arquivo de urls.py limpo, e portanto importaremos as URLS da nossa aplicação ola_mundo no arquivo principal urls.py com o seguinte código: from . import views. Onde estamos dizendo assim: "Olha Django, importe para mim o módulo "views" presente nessa mesma pasta(por isso o '.' após o 'import');
    *Por fim, basta adicionar o seguinte o caminho da nossa view para passar o conteúdo da nossa view.py para a URL principal do nosso projeto: path('', views.ola_mundo), e pronto, finalizamos a nossa primeira prática;
  • Bloco de código completo do módulo views.py:
from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.ola_mundo),
]
  • Para finalizar, basta rodar o comando ./manage.py runserver no terminal novamente e acessar nossa aplicação Django pelo ip gerado.

@huogerac huogerac changed the title Parte 1 - Fazendo o Olá mundo Parte 1) Fazendo o Olá mundo Jul 17, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants