Узнайте, как создать приложение диспетчера задач, используя принципы CRUD и представления на основе классов в Django.

Одной из ключевых особенностей Django является встроенная поддержка создания проектов поверх операций CRUD (создание, чтение, обновление, удаление). Хотя представления Django на основе классов обеспечивают быстрый, простой и гибкий способ создания веб-приложений, многие разработчики по-прежнему используют представления на основе функций.

Представления на основе классов предлагают несколько преимуществ по сравнению с представлениями на основе функций, включая наследование, структурирование кода, возможность повторного использования кода и многое другое. Хотя реализация представлений на основе классов может показаться несколько сложной, это руководство поможет вам понять концепцию, создав приложение диспетчера задач и предоставив пошаговые инструкции.

Что такое представления на основе классов в Django?

В Django представления Функции Python которые принимают веб-запрос и возвращают веб-ответ. Представления на основе классов (CBV) — это альтернативный способ определения представлений в Django с использованием классов Python вместо функций.

instagram viewer

CBV имеют несколько преимуществ, таких как лучшая организация кода, более простое повторное использование кода и возможность использовать наследование для создания вариантов существующих представлений. CBV также предоставляют встроенные методы, такие как получать() и почта() методы, которые вы можете перезаписать для пользовательских поведений.

Код, используемый в этой статье, доступен в этом Репозиторий GitHub.

Представления на основе классов доступны в Django

Django предоставляет несколько встроенных CBV для популярных случаев использования, таких как отображение списков объектов или создание новых. Некоторые из этих встроенных CBV:

  1. Посмотреть список: это представление отображает список объектов, извлеченных из модели. Например, страница со списком всех сообщений, доступных в блоге, будет использовать Посмотреть список.
  2. DetailView: этот вид отображает подробный вид одного объекта, извлеченного из модели. Вы можете использовать DetailView для отображения сведений о конкретных сообщениях в приложении блога.
  3. Создать представление: это представление отображает форму для создания нового объекта и обрабатывает отправку формы. Например, в приложении диспетчера задач вы будете использовать это представление для создания новых задач.
  4. Удалить представление: это представление отображает страницу подтверждения для удаления объекта и обрабатывает удаление страницы.
  5. Обновить вид: это представление отображает форму для обновления существующего объекта и обрабатывает отправку формы.

Django также предоставляет другие представления, в том числе ШаблонView, RedirectView, и FormView. Вы можете обратиться к Документация Джанго для получения подробной информации о представлениях на основе классов.

Создайте приложение диспетчера задач с представлениями на основе классов Django

Создание приложения, такого как приложение диспетчера задач, позволит вам понять, как реализовать операции CRUD с CBV. Диспетчер задач имеет функции, которые позволяют пользователям создавать, обновлять, удалять и читать задачи. Эти функции соответствуют операциям CRUD. Следующие шаги помогут вам создать приложение диспетчера задач с Django CBV.

Настроить проект Django

Чтобы создать приложение диспетчера задач с помощью Django, вы должны начать со следующих шагов:

  1. Установите Django на свой Виртуальная среда Python с помощью этой команды:
    пип установить джанго
  2. Создайте проект Джанго. Следующая команда создаст проект с именем проект_ядро.
    django-admin startproject project_core .
  3. Создайте приложение под названием диспетчер задач.
    python manage.py startapp task_manager
  4. В вашей settings.py добавьте название вашего приложения в INSTALLED_APPS список.
    УСТАНОВЛЕННЫЕ_ПРИЛОЖЕНИЯ = [
    'диспетчер задач',
    ]
  5. Открой urls.py файл в каталоге вашего проекта и настройте URL-адреса для вашего диспетчер задач приложение:
    от django.urls Импортировать путь, включить

    URL-шаблоны = [
    путь('', включать('task_manager.urls')),
    ]

Создайте модель для своего приложения диспетчера задач

В каталоге вашего приложения (или диспетчер задач папку), откройте модели.py файл и создайте модель для своего приложения диспетчера задач. Вот пример модели, которую вы можете использовать:

от django.db Импортировать модели

сортЗадача(модели. Модель):
название = модели. CharField (max_length=200)
описание = модели. Текстовое поле()
завершено = модели. логическое поле (по умолчанию =ЛОЖЬ)
created_at = модели. DateTimeField (auto_now_add=Истинный)

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

python manage.py makemigrations && python manage.py migrate

Создайте форму Django для своего приложения

У вас должна быть форма для обработки Создавать и Обновлять операции. В каталоге вашего приложения создайте файл с именем формы.py. Вот пример:

от Джанго Импортировать формы
от .модели Импортировать Задача

сортформа задачи(форм. МодельФорма):
сортМета:
модель = задача
поля = ['заголовок', 'описание', 'завершенный']

виджеты = {
'заголовок': формы. TextInput (аттрс={'сорт': 'форма-контроль',}),
'описание': формы. Текстовое поле (атрибуты={'сорт': 'форма-контроль',}),
'завершенный': формы. CheckboxInput (attrs={'сорт': 'форма-проверка-ввод'}),
}

В приведенном выше коде есть класс с именем форма задачи который определяет поля и виджеты формы. Он также указывает используемую модель.

Создание представлений Django для каждой операции CRUD

Базовому приложению CRUD с CBV требуется как минимум четыре представления для эффективной обработки всех операций. Следующие несколько шагов покажут вам, как их создать.

Импортируйте необходимые модули и пакеты

Откройте свой просмотры.py файл и сделайте следующий импорт:

от django.views.generic Импортировать ListView, DetailView, CreateView, UpdateView, DeleteView
от django.urls Импортировать reverse_lazy
от .модели Импортировать Задача
от .формы Импортировать форма задачи

Приведенный выше код импортирует пять CBV. Он также импортирует reverse_lazy для перенаправления пользователя на указанный URL-адрес после отправки формы. Наконец, он импортирует Задача модель, и форма задачи созданные ранее.

Создайте представление для списка объектов модели

Приложение диспетчера задач должно иметь страницу со списком всех задач, созданных пользователем. Чтобы создать представление для этого, вы должны использовать Посмотреть список. Вот пример:

сортTaskListView(Посмотреть список):
модель = задача
имя_шаблона = 'диспетчер_задач/список_задач.html'
имя_объекта_контекста = 'задания'

Представление выше определяет три атрибута:

  1. модель: этот атрибут определяет, какую модель использовать для этого конкретного представления.
  2. Имя Шаблона: этот атрибут сообщает Django, какой шаблон отображать в браузере.
  3. context_object_name: этот атрибут определяет имя, которое позволяет шаблону получить доступ к списку объектов в модели.

Большинство CBV будут содержать эти три атрибута.

Создайте представление для обработки сведений о задаче

Каждая задача, которую создает пользователь, должна иметь страницу с подробной информацией. Идеальный CBV для решения этой проблемы ДетальВью. Вот простой пример:

сортTaskDetailView(Подробный вид):
модель = задача
имя_шаблона = 'task_manager/task_detail.html'

Создайте представление для создания задачи

Создайте представление для управления созданием или добавлением новых задач. Это Создавать часть операций CRUD, и правильное представление для этого — Создать представление. Вот как это использовать:

сортТасккреатевиев(Создать представление):
модель = задача
form_class = форма задачи
имя_шаблона = 'task_manager/task_form.html'
success_url = reverse_lazy('список заданий')

В приведенном выше коде представлены два новых атрибута: form_class и Success_url.

form_class Атрибут сообщает представлению, какой класс формы отображать и использовать для своих операций.

Success_url указывает, как перенаправить пользователя после отправки формы. Он использует reverse_lazy функция, которая принимает имя URL-пути.

Создание представления для редактирования задач

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

сортTaskUpdateView(Обновить вид):
модель = задача
form_class = форма задачи
имя_шаблона = 'task_manager/task_form.html'
success_url = reverse_lazy('список заданий')

Вышеприведенный вид похож на Тасккреатевиев созданные ранее. Единственная разница заключается в использовании Обновить вид.

Создайте представление для обработки операций удаления

Чтобы ваши пользователи могли удалять задачи в любое время, вы должны использовать Удалить представление КБВ. Вот пример:

сортTaskDeleteView(Удалить представление):
модель = задача
имя_шаблона = 'task_manager/task_confirm_delete.html'
success_url = reverse_lazy('список заданий')

Настройте URL-адреса вашего приложения

В каталоге вашего приложения создайте urls.py файл и настройте шаблоны URL следующим образом:

от django.urls Импортировать путь
от .Просмотры Импортировать TaskListView, TaskDetailView, TaskCreateView, TaskUpdateView, TaskDeleteView

URL-шаблоны =
путь('', TaskListView.as_view(), имя='список заданий'),
путь('создавать/', TaskCreateView.as_view(), имя='задача_создать'),
путь('задания//', TaskDetailView.as_view(), имя='деталь_задачи'),
путь('задания//update/', TaskUpdateView.as_view(), имя='обновление_задачи'),
путь('задания//delete/', TaskDeleteView.as_view(), имя='task_delete'),
]

Приведенные выше шаблоны URL-адресов аналогичны URL-адресам, созданным с помощью представлений на основе функций. Разница в том, as_view() функция, добавленная в конец каждого имени представления.

Ты можешь использовать слаги Django для создания URL-адресов вместо первичного ключа, использованного выше.

Создавайте шаблоны для ваших представлений

Разрешение вашим пользователям выполнять действия, определенные в приведенных выше представлениях, предполагает, что вы предоставляете им интерфейс для взаимодействия. Из представлений, созданных ранее, приложение диспетчера задач должно иметь четыре пользовательских интерфейса.

В каталоге вашего приложения создайте четыре HTML-шаблона. Вы также должны создать base.html файл. Ты можешь стилизуйте свои шаблоны Django с помощью Bootstrap сэкономить время.

Шаблон списка задач

Этот шаблон должен включать код, в котором перечислены все задачи в модели. Скелетный пример кода таков:

{% расширяет 'base.html' %}

{% заблокировать содержимое %}
<центр>
<h1>Ваши задачиh1>
<аhref="{% url 'task_create' %}">Добавить задачуа>
{% для задачи в задачах %}
<див>
<див>
<h5>{{ задача.название }}h5>
<п>{{ task.description|truncatechars: 50 }}п>
<п>
<сильный>Завершенный:сильный>
{% if task.completed %}Да{% else %}Нет{% endif %}
п>
<аhref="{% url 'task_detail' task.pk %}">
Читать далее
а>
<аhref="{% url 'task_delete' task.pk %}">
Удалить задачу
а>
див>
див>
{% пустой %}
<h3>Пока нет задач.h3>
<аhref="{% url 'task_create' %}">Добавить задачуа>
{% конец для %}
центр>
{% конечный блок%}

С помощью некоторых классов Bootstrap вы можете сделать свою страницу такой:

Шаблон сведений о задаче

На этой странице должна отображаться полная информация о каждой созданной задаче. Вот пример шаблона, который вы можете использовать:

{% расширяет 'base.html' %}

{% заблокировать содержимое %}
<h1>{{ задача.название }}h1>
<п>{{ описание задания }}п>
<п>Завершено: {% if task.completed %}Да{% else %}Нет{% endif %}п>
<аhref="{% url 'task_update' task.pk %}">Изменить задачуа>
<аhref="{% url 'task_delete' task.pk %}">Удалить задачуа>
{% конечный блок%}

В зависимости от вашего подхода к стилю ваша страница должна выглядеть так:

Шаблон формы задачи

Этот шаблон должен содержать форму, позволяющую пользователю создать или обновить задачу.

{% расширяет 'base.html' %}

{% заблокировать содержимое %}
<h1>Создать задачуh1>
<формаметод="почта">
{% csrf_token%}
{{ form.as_p }}
<кнопкатип="представлять на рассмотрение">Сохранятькнопка>
форма>
{% конечный блок%}

Шаблон будет выглядеть так:

Удалить шаблон задачи

Этот шаблон должен быть страницей подтверждения для предотвращения случайного удаления задач.

{% расширяет 'base.html' %}

{% заблокировать содержимое %}
<h1>Подтвердите удалениеh1>
<п>Вы уверены, что хотите удалить "{{ object.title }}"?п>
<формаметод="почта">
{% csrf_token%}
<кнопкатип="представлять на рассмотрение">Удалитькнопка>
<аhref="{% url 'task_list' %}">Отменаа>
форма>
{% конечный блок%}

С некоторым Bootstrap ваша страница должна выглядеть так:

Используйте представления на основе классов для повышения производительности

Представления на основе классов — отличный способ написать чистый, организованный код за короткое время, тем самым повысив производительность. Вы должны использовать их в своих проектах как можно больше. Кроме того, вы можете дополнительно интегрировать такие функции, как функция поиска, уведомления и т. д., чтобы сделать ваше приложение диспетчера задач полноценным функциональным приложением.