Aplicativo Django Todo

Resumo : neste tutorial, você aprenderá como criar um projeto Django Todo App incluindo:

  • Crie um ambiente virtual
  • Instale o pacote Django
  • Crie um novo projeto
  • Adicionando arquivos estáticos
  • Configurando modelos
  • Crie o aplicativo de tarefas
  • Crie o modelo de tarefa e aplique migrações

Você pode baixar o código final deste aplicativo Django Todo aqui.

Criando um ambiente virtual

Execute o seguinte comando python para criar um ambiente virtual usando o módulo integrado venv:

python -m venv venvLinguagem de código:  texto simples  ( texto simples )

E ative o venvambiente virtual usando o seguinte comando:

venv\scripts\activateLinguagem de código:  texto simples  ( texto simples )

Se você usa macOS e Linux, pode usar o seguinte python3comando para criar um novo ambiente virtual:

python3 -m venv venv

E ative-o usando o seguinte comando:

source venv/bin/activateLinguagem de código:  texto simples  ( texto simples )

Instale o pacote Django

Como o Django é um pacote de terceiros, você precisa instalá-lo usando o seguinte pipcomando:

pip install djangoLinguagem de código:  texto simples  ( texto simples )

Criando um novo projeto

Para criar um novo projeto todo_list, você usa o startprojectcomando:

django-admin startproject todo_listLinguagem de código:  texto simples  ( texto simples )

Adicionando arquivos estáticos

Primeiro, crie um staticdiretório dentro do diretório do projeto:

mkdir staticLinguagem de código:  JavaScript  ( javascript )

Segundo, defina o STATICFILES_DIRSpara o staticdiretório após settings.pyo STATIC_URLarquivo para que o Django possa encontrar os arquivos estáticos no staticdiretório:

STATIC_URL = 'static/'
STATICFILES_DIRS = [BASE_DIR / 'static']
Linguagem de código:  Python  ( python )

Terceiro, crie três diretórios js, csse imagesdentro do staticdiretório:

cd static
mkdir css images jsLinguagem de código:  JavaScript  ( javascript )

O staticdiretório ficará assim:

├── static
|  ├── css
|  ├── images
|  └── jsLinguagem de código:  texto simples  ( texto simples )

Por fim, copie o style.cssarquivo e feature.jpga imagem do arquivo de download para os diretórios csse images.

Configurando modelos

Primeiro, crie um templatesdiretório dentro do diretório do projeto:

mkdir templatesLinguagem de código:  Python  ( python )

Segundo, crie um base.htmlmodelo dentro do templatesdiretório com o seguinte conteúdo:

{%load static %}
<!DOCTYPE html>
<html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="{% static 'css/style.css' %}" />
        <title>Todo List</title>
    </head>

    <body>
        <header class="header">
            <div class="container">
            </div>
        </header>
        <main>
            <div class="container">
            </div>
        </main>
        <footer class="footer">
            <div class="container">
               <p>&copy; Copyright {% now "Y" %} by <a href="https://tutorials.acervolima.com">Python Tutorial</a></p>
            </div>
        </footer>
    </body>

</html>Linguagem de código:  HTML, XML  ( xml )

O base.htmlmodelo usa o style.cssarquivo do static/cssdiretório.

Terceiro, configure o diretório do template no TEMPLATESarquivo settings.pypara que o Django possa encontrar o base.htmltemplate.

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [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',
            ],
        },
    },
]
Linguagem de código:  Python  ( python )

Quarto, crie o home.htmlmodelo dentro do templatesdiretório:

{%extends 'base.html'%}
{%load static %}
{%block content%}
	<section class="feature">
		<div class="feature-content">
			<h1>Todo</h1>
			<p>Todo helps you more focus, either work or play.</p>	
			<a class="btn btn-primary cta" href="#">Get Started</a>
		</div>
		<img src="{%static 'images/feature.jpg'%}" alt="" class="feature-image">
	</section>
{%endblock content%}Linguagem de código:  JavaScript  ( javascript )

Criando um aplicativo de tarefas

Primeiro, crie um todoaplicativo no todo_listprojeto usando o startappcomando:

django-admin startapp todoLinguagem de código:  Python  ( python )

Segundo, registre o todoaplicativo no settings.pyprojeto todo_listadicionando-o à INSTALLED_APPSlista:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'todo',
]
Linguagem de código:  Python  ( python )

Terceiro, crie o templatesdiretório dentro do tododiretório app:

cd todo
mkdir templatesLinguagem de código:  Python  ( python )

Quarto, crie o tododiretório dentro do templatesdiretório. O nome do diretório deve ser igual ao nome do aplicativo.

cd templates
mkdir todoLinguagem de código:  Python  ( python )

Quinto, defina uma home()função de visualização dentro do views.pyaplicativo de tarefas que renderiza o home.htmlmodelo:

from django.shortcuts import render

def home(request):
    return render(request,'home.html')Linguagem de código:  Python  ( python )

Sexto, crie urls.pyum arquivo no todoaplicativo e defina uma rota que mapeie para a URL inicial com a home()função de visualização:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
]Linguagem de código:  Python  ( python )

Sétimo, inclua o urls.pydo todoaplicativo no urls.pydo projeto:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('todo.urls'))
]
Linguagem de código:  Python  ( python )

Oitavo, execute o servidor de desenvolvimento Django no todo_listdiretório:

python manage.py runserverLinguagem de código:  Python  ( python )

Por fim, aberto http://127.0.0.1:8000/em um navegador da web, você verá a página do blog que mostra a página inicial:

Crie o modelo de tarefa

Primeiro, defina o Taskmodelo no models.pyaplicativo todo:

from django.db import models
from django.contrib.auth.models import User

class Task(models.Model):
    title = models.CharField(max_length=255)
    description = models.TextField(null=True, blank=True)
    completed = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(User,on_delete=models.CASCADE, null=True, blank=True)
    
    def __str__(self):
        return self.title
    
    class Meta:
        ordering = ['completed']Linguagem de código:  Python  ( python )

Em segundo lugar, registre o Taskmodelo no admin.pyaplicativo todopara que você possa gerenciá-lo na página de administração:

from django.contrib import admin

from .models import Task

admin.site.register(Task)Linguagem de código:  Python  ( python )

Terceiro, faça migrações executando o makemigrationscomando:

python manage.py makemigrationsLinguagem de código:  texto simples  ( texto simples )

Saída:

Migrations for 'todo':
  todo\migrations\0001_initial.py
    - Create model TaskLinguagem de código:  texto simples  ( texto simples )

Quarto, aplique as migrações ao banco de dados:

python manage.py migrateLinguagem de código:  texto simples  ( texto simples )

Saída:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions, todo
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying sessions.0001_initial... OK
  Applying todo.0001_initial... OKLinguagem de código:  texto simples  ( texto simples )

Quinto, crie um superusuário executando o createsuperusercomando:

python manage.py createsuperuserLinguagem de código:  texto simples  ( texto simples )

Saída:

Username: john
Email address:
Password:
Password (again):
Superuser created successfully.Linguagem de código:  texto simples  ( texto simples )

Sexto, reinicie o servidor de desenvolvimento Django:

python manage.py runserverLinguagem de código:  texto simples  ( texto simples )

Sete, faça login na página de administração e crie três tarefas:

lista de tarefas do Django - lista de tarefas

Você pode baixar o código final deste aplicativo Django Todo aqui.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *