Добавьте функции CRUD (создание, чтение, обновление и удаление) в ваше приложение Django.

Операции CRUD в приложении Django означают выполнение операций создания, чтения, обновления и удаления в базе данных. Пользователь с правами администратора может выполнять все эти операции с помощью админ-сайта Django. Но в этой статье мы узнаем, как реализовать это на веб-сайте с помощью Django ModelForm.

Давайте начнем.

Table of Contents:
· Project Setup
· Creating the Employee Model
· Creating the Views and URL patterns
· First Read the Databaseemployee_list view function:list.html:base.html:
· Creating New Employeeforms.py:create.html:create_employee view function:
· Updating/Editing existing data edit_employee view function:edit.html:
· Deleting Employeedelete_employee view function:delete.html:
· Find the Source Code on GitHub
· Resources

Настройка проекта

Во-первых, нам нужно создать проект Django. Давайте установим Джанго:

$ pip install Django

Затем создайте проект Django с именем main:

$ django-admin startproject main

В рамках проекта мы создадим отдельное приложение с именем employee, поскольку оно будет выполнять операции CRUD в базе данных информации о сотрудниках.

$ python manage.py startapp employee 

Затем в корневом каталоге проекта мы создадим папку с именем templates. И внутри папки шаблонов мы создадим файл HTML с именем base.html. В base.html мы напишем общие шаблоны, которыми будет делиться весь проект.

Мы создадим еще одну папку templates внутри приложения employee. Затем внутри папки template мы создадим еще одну папку с именем employee. Внутри templates/employee мы создадим шаблоны специально для приложения employee.

Для нашего CRUD-приложения нам понадобятся четыре шаблона:

  • list.html (Для отображения полученных данных). Это будет главная страница.
  • create.html (Чтобы создать новую сущность сотрудника)
  • edit.html (для обновления/редактирования существующей информации о сотруднике)
  • delete.html (Чтобы удалить объект сотрудника)

Давайте создадим эти четыре шаблона внутри templates/employee.

Затем нам нужно создать файл urls.py внутри приложения employee. Здесь мы напишем конфигурации URL для приложения.

Пока структура проекта будет следующей:

.
├── employee
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── models.py
│   ├── templates
│   │   └── employee
│   │       ├── create.html
│   │       ├── delete.html
│   │       ├── edit.html
│   │       └── list.html
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── main
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
└── templates
    └── base.html

Теперь нам нужно добавить приложение employee в main/settings.py. Добавьте ‘employee.apps.EmployeeConfig’ в список INSTALLED_APPS:

Нам также нужно добавить каталог templates в базовый каталог нашего проекта. Измените список TEMPLATES в main/settings.py следующим образом:

Первоначальная настройка проекта завершена.

Запустите начальную миграцию:

$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, employee, sessions
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 employee.0001_initial... OK
  Applying sessions.0001_initial... OK

Затем запустите сервер, чтобы увидеть, все ли работает или нет:

$ python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
December 30, 2021 - 08:31:28
Django version 4.0, using settings 'main.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Создание модели сотрудника

Внутри employee/models.py мы создадим нашу модель Employee.

Нам нужно зарегистрировать эту модель в admin.py, чтобы увидеть ее на сайте администратора.

Теперь выполните миграцию в базу данных и создайте суперпользователя, чтобы получить доступ администратора, используя следующие команды:

$ python manage.py makemigrations
$ python manage.py migrate
$ python manage.py createsuperuser

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

Внутри employee/views.py мы создадим четыре функции представления:

Затем мы создадим шаблоны URL для каждого представления внутри employee/urls.py:

После этого нам нужно добавить employee.urls к urls.py нашего проекта.

Теперь каждая конечная точка URL будет работать. Но нам еще предстоит реализовать CRUD. Мы будем делать это один за другим.

Сначала прочтите базу данных

Перейдите на сайт администратора и создайте несколько сотрудников.

Сначала мы будем работать с представлением employee_list и перечислим информацию о сотрудниках. Это будет Чтение CRUD. Позже мы обработаем Создать, чтобы нам не нужно было создавать сотрудников с сайта администратора.

функция просмотра списка сотрудников:

list.html отобразит информацию о сотрудниках в таблице.

список.html:

list.html расширяет файл base.html. Для некоторых простых стилей мы добавим Bootstrap к base.html и распространим его на все остальные шаблоны.

base.html:

Домашняя страница теперь будет извлекать данные о сотрудниках из базы данных и перечислять их.

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

Теперь мы реализуем Создание CRUD, чтобы нам больше не требовался доступ администратора для добавления новых данных.

Внутри приложения для сотрудников нам нужно создать файл forms.py. Затем мы получим поля модели Employee и создадим форму с этими полями. Мы сделаем это с помощью Django ModelForm.

формы.ру:

Мы используем словарь widgets, чтобы добавить к форме стиль начальной загрузки. Мы создадим поле формы в create.html для ввода данных.

создать.html:

Не забудьте добавить method=’POST’ к тегу form и {% csrf_token %} внутри формы.

Затем мы изменим функцию представления create_employee.

Функция просмотра create_employee:

Не забудьте импортировать EmployeeForm из forms.py перед функцией create_employee.

Теперь, если мы нажмем кнопку Add New Info на главной странице, мы должны перейти на URL-адрес create/. Здесь мы увидим следующую форму:

Если мы заполним форму и нажмем submit, должен быть создан новый экземпляр сотрудника. Информация о новом сотруднике появится на главной странице.

Реализована функция Создать.

Обновление/редактирование существующих данных

Теперь мы перейдем к Обновлению CRUD. Представление edit_employee почти похоже на представление create_employee. Нам просто нужно передать экземпляр сотрудника в форму.

функция просмотра edit_employee:

edit.html также почти похож на create.html. Нам просто нужно предварительно заполнить форму существующими данными.

редактировать.html:

Теперь у нас должна быть возможность редактировать информацию о сотрудниках.

И обновление появится на главной странице.

Удаление сотрудника

Реализовать Удалить довольно просто. Нам просто нужно удалить экземпляр из базы данных, когда кто-то нажимает на Remove.

функция просмотра delete_employee:

удалить.html:

Нажав «Удалить», мы хотим, чтобы нас перенаправили на страницу подтверждения. Здесь мы увидим уведомление о подтверждении. Нажав Confirm, мы удалим сотрудника.

Приложение CRUD готово! Теперь наше приложение может выполнять операции создания, чтения, обновления и удаления.

Я надеюсь, что вы найдете сообщение полезным. Спасибо за прочтение.

Найдите исходный код на GitHub

Я делюсь репозиторием GitHub для этого проекта. Вы можете увидеть и использовать исходный код оттуда:



Ресурсы

Если вам нравится читать подобные статьи, подумайте о том, чтобы стать участником Medium. Таким образом, вы получаете неограниченный доступ ко всем историям на Medium. Если вы зарегистрируетесь по моей реферальной ссылке ниже, я получу небольшую комиссию от ваших ежемесячных платежей в размере 5 долларов. Таким образом, вы можете поддержать меня как писателя.



Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.