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 *