М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет330/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   326   327   328   329   330   331   332   333   334
Байланысты:
Изучаем Python

УПРАЖНЕНИЯ
19.3. Рефакторинг:
в 
views .py
есть два места, в которых программа проверяет, что пользова-
тель, связанный с темой, является текущим пользователем. Поместите код этой проверки 
в функцию с именем 
check_topic_owner()
и вызовите эту функцию при необходимости.
19.4. Защита new_entry:
пользователь может попытаться добавить новую запись в журнал 
другого пользователя, вводя URL-адрес с идентификатором темы, принадлежащей друго-
му пользователю. Чтобы предотвратить подобные атаки, перед сохранением новой запи-
си проверьте, что текущий пользователь является владельцем темы, к которой относится 
запись.
19.5. Защищенный блог:
в проекте Blog примите меры к тому, чтобы каждое сообщение 
в блоге было связано с конкретным пользователем. Убедитесь в том, что чтение всех со-
общений доступно всем пользователям, но только зарегистрированные пользователи могут 
создавать новые и редактировать существующие сообщения. В представлении, в котором 
пользователи редактируют сообщения, перед обработкой формы убедитесь в том, что ре-
дактируемое сообщение принадлежит именно этому пользователю.
Итоги
В этой главе вы научились использовать формы для создания новых тем и записей, 
а также редактирования существующих данных. Далее мы перешли к реализации 
системы учетных записей. Вы предоставили существующим пользователям воз-
можность начинать и завершать сеанс работы с приложением, а также научились 
использовать класс Django 
UserCreationForm
для создания новых учетных записей.


Итоги
453
После создания простой системы аутентификации и регистрации пользователей вы 
ограничили доступ пользователей к некоторым страницам; для этого использовался 
декоратор 
@login_required
. Затем данные были связаны с конкретными пользова-
телями при помощи отношения внешнего ключа. Вы также узнали, как выполнить 
миграцию базы данных, когда миграция требует ввести данные по умолчанию.
В последней части главы вы узнали, как ограничить состав данных, просматрива-
емых пользователем, с использованием функций представления. Для чтения со-
ответствующих данных использовался метод 
filter()
, а владелец запрашиваемых 
данных сравнивался с текущим пользователем.
Не всегда бывает сразу понятно, какие данные должны быть доступны всем поль-
зователям, а какие данные следует защищать, но этот навык приходит с практикой. 
Решения, принятые нами в этой главе для защиты данных пользователей, наглядно 
показывают, почему при построении проекта желательно работать в команде: если 
кто-то просматривает код вашего проекта, это повышает вероятность выявления 
плохо защищенных областей.
К настоящему моменту мы построили полностью функциональный проект, рабо-
тающий на локальной машине. В последней главе мы доработаем оформление при-
ложения Learning Log, чтобы оно выглядело более привлекательно. Также проект 
будет развернут на сервере, чтобы любой пользователь с доступом к интернету мог 
зарегистрироваться и создать учетную запись.


20
Оформление 
и развертывание 
приложения
Приложение Learning Log уже вполне работоспособно, но оно не имеет стилевого 
оформления и работает только на локальной машине. В этой главе мы определим 
для проекта простое, но профессиональное оформление, а затем развернем его на 
сервере, чтобы любой желающий мог создать учетную запись.
Для стилевого оформления будет использоваться библиотека Bootstrap — набор 
инструментов для оформления веб-приложений, с которыми они будут выглядеть 
профессионально на любых современных устройствах, от большого монитора с пло-
ским экраном до смартфона. Для этого мы воспользуемся приложением 
django-
bootstrap4
, а вы заодно потренируетесь в использовании приложений, созданных 
другими разработчиками Django.
Для развертывания Learning Log будет использоваться Heroku — сайт, позволяю-
щий загрузить ваш проект на один из его серверов, чтобы сделать его доступным 
для любого пользователя с подключением к интернету. Также мы начнем поль-
зоваться системой контроля версий Git для отслеживания изменений в проекте.
Когда работа с Learning Log будет завершена, вы будете уметь разрабатывать про-
стые веб-приложения, придавать им качественный внешний вид и развертывать 
их на работающих серверах. Также по мере накопления опыта вы научитесь поль-
зоваться ресурсами с материалами более высокого уровня.
Оформление приложения Learning Log
До сих пор мы намеренно игнорировали оформление приложения, чтобы сосредо-
точиться на его функциональности. И это вполне разумный подход к разработке, 
потому что приложение приносит пользу только в том случае, если оно работает. 
Конечно, когда приложение начинает работать, оформление выходит на первый 
план, чтобы пользователи захотели работать с ним.
В этом разделе я кратко опишу приложение 
django-bootstrap4
и покажу, как ин-
тегрировать его в проект и подготовить к развертыванию.


Оформление приложения Learning Log
455
Приложение django-bootstrap4
Для интеграции Bootstrap в наш проект будет использоваться приложение 
django-
bootstrap4
. Это приложение загружает необходимые файлы Bootstrap, размещает 
их в правильных каталогах проекта и предоставляет доступ к стилевым директивам 
в шаблонах проекта.
Чтобы установить 
django-bootstrap4
, введите следующую команду в активной 
виртуальной среде:
(ll_env)learning_log$ 


Достарыңызбен бөлісу:
1   ...   326   327   328   329   330   331   332   333   334




©www.engime.org 2024
әкімшілігінің қараңыз

    Басты бет