Добавьте функции 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 Database ∘ employee_list view function: ∘ list.html: ∘ base.html: · Creating New Employee ∘ forms.py: ∘ create.html: ∘ create_employee view function: · Updating/Editing existing data ∘ edit_employee view function: ∘ edit.html: · Deleting Employee ∘ delete_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 для этого проекта. Вы можете увидеть и использовать исходный код оттуда:
Ресурсы
- https://docs.djangoproject.com/en/4.0/topics/forms/modelforms/
- https://www.javatpoint.com/django-crud-application
- https://youtu.be/EX6Tt-ZW0so
Если вам нравится читать подобные статьи, подумайте о том, чтобы стать участником Medium. Таким образом, вы получаете неограниченный доступ ко всем историям на Medium. Если вы зарегистрируетесь по моей реферальной ссылке ниже, я получу небольшую комиссию от ваших ежемесячных платежей в размере 5 долларов. Таким образом, вы можете поддержать меня как писателя.
Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.