Создание Todo-приложения Django в Python

В этом руководстве вы узнаете, как создать проект приложения Django Todo в Python.

Содержание

Создание виртуальной среды

Выполните следующую команду Python, чтобы создать виртуальную среду с помощью встроенного модуля venv:

python -m venv venv

И активируйте виртуальную среду venv с помощью следующей команды:

venv\scripts\activate

Если вы используете macOS и Linux, вы можете использовать следующую команду python3 для создания новой виртуальной среды:

python3 -m venv venv

И активируйте ее:

source venv/bin/activate

Установка пакета Django

Поскольку Django — это сторонний пакет, вам необходимо установить его с помощью следующей команды pip:

pip install django

Создание нового проекта

Чтобы создать новый проект todo_list, используйте команду startproject:

django-admin startproject todo_list

Добавление статических файлов

  • Сначала создайте статический каталог внутри каталога проекта:
mkdir static
  • Во-вторых, установите STATICFILES_DIRS на статический каталог в settings.py после файла STATIC_URL, чтобы Django мог найти статические файлы:
STATIC_URL = 'static/'
STATICFILES_DIRS = [BASE_DIR / 'static']
  • В-третьих, создайте три каталога js, css и images внутри статического каталога:
cd static
mkdir css images js

Статический каталог будет выглядеть так:

├── static
|  ├── css
|  ├── images
|  └── js
  • Наконец, скопируйте файл style.css и изображение feature.jpg из загруженного файла в каталоги css и images.

Настройка шаблонов

  • Сначала создайте каталог шаблонов внутри каталога проекта:
mkdir templates
  • Во-вторых, создайте шаблон base.html внутри каталога templates со следующим содержимым:
{%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://copython.ru">Python Tutorial</a></p>
            </div>
        </footer>
    </body>

</html>

Шаблон base.html использует файл style.css из каталога static/css.

  • В-третьих, настройте каталог шаблонов в TEMPLATES файла settings.py, чтобы Django мог найти шаблон base.html.
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',
            ],
        },
    },
]
  • В-четвертых, создайте шаблон home.html внутри каталога шаблонов:
{%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%}

Создание приложения todo

Сначала создайте приложение todo в проекте todo_list с помощью команды startapp:

django-admin startapp todo
  • Во-вторых, зарегистрируйте приложение todo в settings.py проекта todo_list, добавив его в список INSTALLED_APPS:
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'todo',
]
  • В-третьих, создайте каталог шаблонов внутри каталога приложения todo:
cd todo
mkdir templates
  • В-четвертых, создайте каталог todo внутри каталога templates. Имя каталога должно совпадать с именем приложения.
cd templates
mkdir todo
  • В-пятых, определите функцию представления home() внутри views.py приложения todo, которая отображает шаблон home.html:
from django.shortcuts import render

def home(request):
    return render(request,'home.html')
  • В-шестых, создайте файл urls.py в приложении todo и определите маршрут, который сопоставляется с домашним URL-адресом с помощью функции просмотра home():
from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
]
  • В-седьмых, включите urls.py приложения todo в urls.py проекта:
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('todo.urls'))
]
  • В-восьмых, запустите сервер разработки Django из каталога todo_list:
python manage.py runserver

Наконец, откройте http://127.0.0.1:8000/ в веб-браузере, и вы увидите страницу блога, которая отображает домашнюю страницу:

Отображение домашней страницы приложения todo

Создание модели задачи

  • Сначала определите модель задачи в файле models.py приложения 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']
  • Во-вторых, зарегистрируйте модель Task в файле admin.py приложения todo, чтобы вы могли управлять ею на странице администратора:
from django.contrib import admin

from .models import Task

admin.site.register(Task)
  • В-третьих, выполните миграцию, выполнив команду makemigrations:
python manage.py makemigrations

Выход:

Migrations for 'todo':
  todo\migrations\0001_initial.py
    - Create model Task
  • В-четвертых, примените миграции к базе данных:
python manage.py migrate

Выход:

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... OK
  • В-пятых, создайте суперпользователя, выполнив команду createsuperuser:
python manage.py createsuperuser

Выход:

Username: john
Email address:
Password:
Password(again):
Superuser created successfully.
  • В-шестых, перезапустите сервер разработки Django:
python manage.py runserver
  • Седьмое, войдите на страницу администратора и создайте три задачи:

django todo list - список задач

Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *