Практически всю веб-разработку можно свести к CRUD-операциям. CRUD — широко распространенный термин, который означает четыре стандартные операции над любой сущностью. В этом уроке познакомимся с CRUD-операциями, которые считаются типичными для веб-разработки.
CRUD — это акроним, который обозначает четыре операции над сущностями веб-разработки по первым буквам их названий:
Например, в случае с пользователем можно составить такое соответствие:
Create
Read
Update
Delete
Так же можно расписать действия над любыми другими ресурсами: фотографиями пользователя, его друзьями, сообщениями.
Создание полного круда включает в себя следующие действия:
Новички тратят на создание такого круда не один день. У опытного разработчика в прокачанном фреймворке этот процесс занимает максимум часы. Flask, как и другие микрофреймворки, не предоставляет средств автоматизации, поэтому придется многое делать руками. В целях обучения это оправданно, но в промышленной разработке, это должно быть автоматизировано.
Дальше мы разберем весь процесс создания круда на примере каталога школ программирования за исключением работы с базой данных и тестов. Начнем с роутинга. Полный круд включает минимум семь маршрутов. Их может быть больше, так как любое из действий может повторяться не один раз:
Метод | Маршрут | Шаблон | Описание |
---|---|---|---|
GET | /schools | schools/index.html | Список школ |
GET | /schools/{id} | schools/show.html | Информация о школе |
GET | /schools/new | schools/new.html | Форма создания новой школы |
POST | /schools | Создание новой школы | |
GET | /schools/{id}/edit | schools/edit.html | Форма редактирования школы |
PATCH/PUT | /schools/{id} | Обновление школы | |
DELETE | /schools/{id} | Удаление школы |
Такое соглашение изначально появилось в Rails и затем было адаптировано во многих фреймворках на языках отличных от Ruby.
В этом уроке мы разберем первые два маршрута: просмотр списка и конкретного ресурса. Остальные рассмотрим в следующих уроках.
Общий алгоритм вывода списка всегда проходит по одному сценарию и не зависит от языка программирования:
Обычно в этот список добавляют различные действия, которые можно выполнять над сущностями. Например, редактирование, удаление или просмотр.
Обработчик
@app.route('/schools')
def schools():
repo = SchoolRepository()
schools = repo.content()
return render_template(
'schools/index.html',
schools=schools,
)
Шаблон
<table>
{% for school in schools %}
<tr>
<td>
{{ school.id }}
</td>
<td>
<a href="{{ url_for('school', id=school.id) }}">{{ school.name }}</a>
</td>
</tr>
{% endfor %}
</table>
Это страница, на которой описана конкретная сущность. Например, на Хекслете к таким страницам относятся: профиль пользователя, страница курса, страница профессии, страница урока. Как и в случае со списком, порядок действий для отображения всегда один и тот же:
Обработчик
@app.route('/schools/<id>')
def school(id):
repo = SchoolRepository()
school = repo.find(id)
return render_template(
'schools/show.html',
school=school,
)
Шаблон
<div>
{{ school.id }}: {{ school.name }}
</div>
Если сущность была удалена или ее вообще не существовало, то с точки зрения HTTP такой адрес сайта должен вернуть HTTP-код 404. Это можно сделать, если вернуть соответствующий ответ:
@app.route('/schools/<id>')
def school(id):
repo = SchoolRepository()
school = repo.find(id)
if not school:
return 'Page not found', 404
return render_template(
'schools/show.html',
school=school,
)
Обычно механизм обработки таких ошибок построен через исключения. С ними мы познакомимся в следующих курсах.
Мы познакомились с CRUD-операциями, которые считаются типичными для веб-разработки: создание, чтение, обновление и удаление. Также мы подробно разобрали первые два маршрута: просмотр списка и конкретного ресурса. Далее рассмотрим остальные.
Вам ответят команда поддержки Хекслета или другие студенты.
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
Наши выпускники работают в компаниях:
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
Зарегистрируйтесь или войдите в свой аккаунт