Книга «Изучаем Python»



Pdf көрінісі
бет237/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   230   231   232   233   234   235   236   237   238
УПРАЖНЕНИЯ

19-3 . Рефакторинг: в views .py есть два места, в которых программа проверяет, что пользо-

ватель, связанный с темой, является текущим пользователем . Поместите код этой проверки 

в функцию с именем check_topic_owner() и вызовите эту функцию при необходимости .

19-4 . Защита new_entry: пользователь может попытаться добавить новую запись в журнал 

другого пользователя, вводя URL-адрес с идентификатором темы, принадлежащей друго-

му пользователю . Чтобы предотвратить подобные атаки, перед сохранением новой записи 

проверьте, что текущий пользователь является владельцем темы, к которой относится за-

пись .

19-5 . Защищенный блог: в проекте Blog примите меры к тому, чтобы каждое сообщение 



в блоге было связано с конкретным пользователем . Убедитесь в том, что чтение всех со-

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

создавать новые и редактировать существующие сообщения . В представлении, в котором 

пользователи редактируют сообщения, перед обработкой формы убедитесь в том, что ре-

дактируемое сообщение принадлежит именно этому пользователю .

Итоги


В этой главе вы научились использовать формы для создания новых тем и за-

писей, а также редактирования существующих данных. Далее мы перешли к ре-

ализации системы учетных записей. Вы предоставили существующим пользова-



436    Глава 19  •  Учетные записи пользователей

телям возможность начинать и завершать сеанс работы с приложением, а также 

научились использовать класс Django 

UserCreationForm

 для создания новых 

учетных записей.

После создания простой системы аутентификации и регистрации пользователей 

вы ограничили доступ пользователей к некоторым страницам; для этого исполь-

зовался декоратор 

@login_required

. Затем данные были связаны с конкретными 

пользователями при помощи отношения внешнего ключа. Вы также узнали, 

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

по умолчанию.

В последней части главы вы узнали, как ограничить состав данных, просматрива-

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

ответствующих данных использовался метод 

filter()


, а владелец запрашиваемых 

данных сравнивался с текущим пользователем.

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

зователям, а какие данные следует защищать, но этот навык приходит с практикой. 

Решения, принятые нами в этой главе для защиты данных пользователей, наглядно 

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

кто-то просматривает код вашего проекта, это повышает вероятность выявления 

плохо защищенных областей.

К настоящему моменту мы построили полностью функционирующий проект, ра-

ботающий на локальной машине. В последней главе мы доработаем оформление 

приложения Learning Log, чтобы оно выглядело более привлекательно. Также про-

ект будет развернут на сервере, чтобы любой пользователь с доступом к Интернету 

мог зарегистрироваться и создать учетную запись.



20

Оформление 

и развертывание 

приложения

Приложение Learning Log уже вполне работоспособно, но оно не имеет стилевого 

оформления и работает только на локальной машине. В этой главе мы определим 

для проекта простое, но профессиональное оформление, а затем развернем его 

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

Для стилевого оформления будет использоваться библиотека Bootstrap — набор 

инструментов для оформления веб-приложений, с которыми они будут выглядеть 

профессионально на любых современных устройствах, от большого монитора с пло-

ским экраном до смартфона. Для этого мы воспользуемся приложением 

django-

bootstrap3

, а вы заодно потренируетесь в использовании приложений, созданных 

другими разработчиками Django.

Для развертывания Learning Log будет использоваться Heroku — сайт, по-

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

доступным для любого пользователя с подключением к Интернету. Также 

мы начнем пользоваться системой контроля версий Git для отслеживания 

изменений в проекте.

Когда работа с Learning Log будет завершена, вы будете уметь разрабатывать про-

стые веб-приложения, придавать им качественный внешний вид и развертывать 

их на работающих серверах. Также по мере накопления опыта вы научитесь поль-

зоваться ресурсами с материалами более высокого уровня.

Оформление приложения Learning Log

До сих пор мы намеренно игнорировали оформление приложения, чтобы сосредо-

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

потому что приложение приносит пользу только в том случае, если оно работает. 

Конечно, когда приложение начинает работать, оформление выходит на первый 

план, чтобы пользователи захотели работать с ним.

В этом разделе я кратко опишу приложение 

django-bootstrap3

 и покажу, как ин-

тегрировать его в проект и подготовить к развертыванию.



438    Глава 20  •  Оформление и развертывание приложения

Приложение django-bootstrap3

Для интеграции Bootstrap в наш проект будет использоваться приложение 

django-


bootstrap3

. Это приложение загружает необходимые файлы Bootstrap, размещает 

их в правильных каталогах проекта и предоставляет доступ к стилевым директивам 

в шаблонах проекта.

Чтобы установить 

django-bootstrap3

, введите следующую команду в активной 

виртуальной среде:

(ll_env)learning_log$ pip install django-bootstrap3

...


Successfully installed django-bootstrap3

Затем необходимо добавить следующий код для включения 

django-boostrap3

 

в список 



INSTALLED_APPS

 в файле 

settings .py

:

settings.py

...

INSTALLED_APPS = (



...

'django.contrib.staticfiles',

    # Сторонние приложения

    'bootstrap3',

    

# Мои приложения



'learning_logs',

'users',


)

...


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

и включите в нее запись 

'bootstrap3'

. Обычно приложения должны включаться 

в 

INSTALLED_APPS



,но для надежности прочитайте инструкции по установке кон-

кретного приложения.

Приложение 

django-bootstrap3

 должно включать jQuery — библиотеку JavaScript, 

которая содержит некоторые интерактивные элементы, предоставляемые шабло-

ном Bootstrap. Добавьте следующий код в конец 

settings .py

:

settings.py

...


# Мои настройки

LOGIN_URL = '/users/login/'

# Настройки django-bootstrap3

BOOTSTRAP3 = {

    'include_jquery': True,

    }


Этот фрагмент избавляет вас от необходимости загружать библиотеку jQuery и раз-

мещать ее в правильном каталоге вручную.




Оформление приложения Learning Log    439

Использование Bootstrap для оформления Learning Log

По сути Bootstrap представляет собой большой набор инструментов стилевого 

оформления. Также библиотека содержит ряд шаблонов, которые можно при-

менить к проекту для формирования общего стиля. Если вы только начинаете 

работать с Bootstrap, вам будет намного проще воспользоваться этими шаблона-

ми, чем использовать отдельные инструменты оформления. Чтобы просмотреть 

шаблоны, предоставляемые Bootstrap, перейдите в раздел 

Getting

 

Started



 на сайте 

http://getbootstrap.com/; прокрутите страницу до заголовка 

Examples


 и найдите 

раздел 


Navbars

 

in



 

action


. Мы воспользуемся шаблоном 

Static


 

top


 

navbar


, который 

предоставляет простую панель навигации у верхнего края, заголовок страницы 

и контейнер для ее содержимого.

На рис. 20.1 показано, как будет выглядеть домашняя страница после применения 

шаблона Bootstrap к 

base .html

 и незначительного изменения 

index .html

.



Достарыңызбен бөлісу:
1   ...   230   231   232   233   234   235   236   237   238




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

    Басты бет