Python e Django – Parte 01: Criação de um projeto, configuração e criação de uma URL


Trabalhar no ambiente virtual Django (Linux):
$ source /opt/virtualenv/django/bin/activate

Trabalhar no ambiente virtual Django (Windows):
workon django

Criando um projeto:
$ django-admin startproject Adocao

No Adocao/settings.py alterar configurações para o português do Brasil:

LANGUAGE_CODE = 'pt-br'
TIME_ZONE = 'America/Sao_Paulo'

Executar a criação de tabelas no banco e do conteúdo necessário para o gerenciamento do próprio Django

$ python manage.py migrate

Crie um Super Usuário para você (administrador):

$ python manage.py createsuperuser

Iniciar o servidor Django (padrão porta 8000)

$ python manage.py runserver

Se preferir, pode utilizar outra porta

$ python manage.py runserver 8080 (para definir, por exemplo, a porta 8080)

Outro IP

$ python manage.py runserver x.x.x.x:8000 (para rodar na rede local/Internet)

Ou de forma automática com seu IP da rede local

$ python manage.py runserver 0:8000 (para rodar na rede local/Internet)

Criando seu primeiro módulo (app) no projeto

$ python manage.py startapp cadastros

Registre seu app no seu projeto

É necessário ativar seu app no projeto lá no arquivo Adocao/settings.py. 

INSTALLED_APPS = [
'cadastros.apps.CadastrosConfig',
'django.contrib.admin',
...

Criando a primeira tela com classes (método mais utilizado desde a versão 2), conhecido como Class-based Views para realizar as tarefas do seu sistema, como inserir, cadastrar, exibir uma página, etc.

No arquivo Adocao/cadastros/views.py importe a classe genérica para exibir uma página simples e depois crie sua primeira classe para “renderizar” um template (HTML):

from django.views.generic import TemplateView
# Create your views here.

class IndexView(TemplateView):
    template_name = "index.html"

Como funcionam as classes dentro do “views”:

class NomeDaPaginaView(ClassePai):
template_name = "sua_pagina.html"

Criando um template em HTML para ser usado pelas Views

Primeiro altere a configuração do arquivo Adocao/Adocao/settings.py lá na configuração dos templates:

Procure por: ‘DIRS’: [],

E troque por: ‘DIRS’: [ os.path.join(BASE_DIR, ‘templates’) ],

Agora crie uma pasta chamada ‘templates‘ dentro da pasta da sua aplicação ‘animais’. Dentro dela você pode criar as páginas HTML que vai usar como suas telas (templates). Por exemplo: animais/templates/index.html

Definindo as URLS do seu sistema

Por padrão, os endereços ficam registrados nos arquivos urls.py. Cada app pode ter seus próprios endereços e o seu Projeto (Adocao) também pode ter as suas. 

Primeiro crie o arquivo “urls.py” dentro do seu app: animais/urls.py. 

Faça a importação da biblioteca que gerencia as urls e das classes/métodos criados nos views. 

from django.urls import path
from .views import IndexView

Crie uma url dentro do vetor de urls desse app. Os parâmetros são (nessa ordem): endereço, método/classe do views, nome da url no sistema.

urlpatterns = [
path('', IndexView.as_view(), name="index"),
]

Exemplo para criar novas URLS no seu projeto:

path('endereço_de_url/algo_mais/', NomeDaSuaView.as_view(), name="index"),

Adicione as URLS do app como URLS do projeto

Edite o arquivo Adocao/urls.py e inclua a biblioteca “include” depois de importar a biblioteca “path”.

from django.urls import path, include

Dentro da sua lista de urls, adicione um nome padrão para importar todas as suas urls do app:

urlpatterns = [
# Vai incluir todas as URLS do app animais neste padrão
path('', include('animais.urls')),
  path('admin/', admin.site.urls),
]

Se deixar ‘’ (aspas vazias) não precisa digitar nada na URL pra aceitar este padrão.

Definindo o diretório STATIC para armazenar seu CSS, imagens, JS, etc.

Dentro do diretório Adocao, raiz do projeto e não junto com settings.py, crie uma pasta chamada “static” e coloque lá todo seu css, js, imagens, etc.

Somente os arquivos HTML ficam dentro da pasta template de cada app porque eles podem ser exclusivos daquele app. A ideia da pasta static é disponibilizar as imagens, js e css para todos os apps e não somente um.

No arquivo Adocao/settings.py acrescente uma configuração para o Django procurar a pasta static na raiz do seu projeto (você pode ter várias pastas statics no seu PC):

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

Na primeira linha de todo arquivo HTML você precisa importar a pasta static do seu projeto:

{% load static %}

Agora é só usar conforme o exemplo abaixo para referenciar o local dela:

<img strc="{% static "img/example.jpg" %}" alt="My image"/>

Sempre em vez de colocar o caminho real, deve ser utilizado o esquema do static acima para referenciar algo que tem lá.

Reaproveitando um template

No Django é possível reutilizar um arquivo html (template) reescrevendo apenas algumas partes dele. Para isso, crie blocos de código no seu arquivo de modelo. Por exemplo:

modelo.html

<!DOCTYPE html>
<html lang="pt-br">
  <head>
    <meta charset="utf-8">
    …
  </head>
  <body>

  {% block menu %}
    <div class=”header”>
...
    </div>
  {% endblock %}

  {% block conteudo %}
    <div class=”container”>
...
    </div>
  {% endblock %}

  {% block rodape %}
    <div class=”footer”>
...
    </div>
  {% endblock %}

  </body>
</html>

No seu arquivo que deve ser igual a este anterior, pasta “estender” ele como se fosse uma herança e depois só é necessário reescrever os blocos que você quer alterar. Exemplo:

pagina_inicial.html

{% extends 'modelo.html' %}
{% block conteudo %}
  <div class="container">
    <div class="row">
      <div class="col-sm pt-5">
        <h3>Mah oe :D</h3>
       </div>
    </div>
  </div>
{% endblock %}

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *