Главная страница
Навигация по странице:

  • /locallibrary/templates/registration/password_reset_form.html

  • Сброс пароля

  • /locallibrary/templates/registration/password_reset_done.html

  • Разворачивание сайта на сервере

  • Фреймворк Django. Назначение, применение в современной web разработке


    Скачать 244.67 Kb.
    НазваниеФреймворк Django. Назначение, применение в современной web разработке
    Дата01.02.2022
    Размер244.67 Kb.
    Формат файлаdocx
    Имя файла2_5426968959800842112.docx
    ТипКурсовая
    #348063
    страница2 из 2
    1   2

    Форма сброса пароля


    Это форма, используемая для получения адреса электронной почты пользователя (для отправки пароля для сброса пароля). Создайте /locallibrary/templates/registration/password_reset_form.html и дайте ему следующее содержание:

    {% extends "base_generic.html" %}

    {% block content %}

    <form action="" method="post">{% csrf_token %}

    {% if form.email.errors %} {{ form.email.errors }} {% endif %}

    <p>{{ form.email }}p>

    <input type="submit" class="btn btn-default btn-lg" value="Reset password" />

    form>

    {% endblock %}

    Copy to Clipboard

    Сброс пароля


    Эта форма отображается после того, как ваш адрес электронной почты будет собран. Создайте /locallibrary/templates/registration/password_reset_done.html, и дайте ему следующее содержание:

    {% extends "base_generic.html" %}

    {% block content %}

    <p>We've emailed you instructions for setting your password. If they haven't arrived in a few minutes, check your spam folder.p>

    {% endblock %}

    Сессии

    Все взаимодействия между браузерами и серверами осуществляются при помощи протокола HTTP, который не сохраняет своё состояние (stateless). Данный факт означает, что сообщения между клиентом и сервером являются полностью независимыми один от другого — то есть не существует какого-либо представления "последовательности", или поведения в зависимости от предыдущих сообщений. В результате, если вы хотите создать сайт который будет отслеживать взаимодействие с клиентом (браузером), вам нужно реализовать это самостоятельно.

    Сессии являются механизмом, который использует Django (да и весь остальной "Интернет") для отслеживания "состояния" между сайтом и каким-либо браузером. Сессии позволяют вам хранить произвольные данные браузера и получать их в тот момент, когда между данным браузером и сайтом устанавливается соединение. Данные получаются и сохраняются в сессии при помощи соответствующего "ключа".

    Django использует куки (cookie), которые содержат специальный идентификатор сессии, который выделяет среди остальных, каждый браузер и соответствующую сессию. Реальные данные сессии, по умолчанию, хранятся в базе данных сайта (это более безопасно, чем сохранять данные в куки, где они могут быть уязвимы для злоумышленников). Однако, у вас есть возможность настроить Django так, чтобы сохранять данные сессий в других местах (кеше, файлах, "безопасных" куки). Но всё же хранение по умолчанию является хорошей и безопасной возможностью.

    Вы можете получить доступ к переменной session, в соответствующем отображении, через параметр request (HttpRequest передаётся как первый аргумент в каждое отображение). Переменная сессии является связью с определённым пользователем (или, если быть более точным, связью с определённым браузером, который определяется при помощи идентификатора (id) сессии, получаемого из куки браузера).

    Переменная (или поле) session является объектом-словарём, который служит для чтения и записи неограниченное число раз. С ним вы можете выполнять любые стандартные операции, включая очистку всех данных, проверку наличия ключа, циклы по данным и так далее. Большую часть времени вы будете тратить на обычные "словарные" операции - получения и установки значений.

    Ниже представлены фрагменты кода, которые показывают вам как получать, задавать и удалять некоторые данные при помощи ключа "my_car", связанного с текущей сессией (браузером).

    Одной из самых грандиозных вещей в Django является то, что вам не надо думать о механизме, который связывает сессию с текущим запросом в отображении. Во фрагменте ниже, всё что вам надо знать, это то, что my_car связана с тем браузером, который отправил текущий запрос.

    # Получение значения сессии при помощи ключа(то есть, 'my_car').

    # Если такого ключа нет, то возникнет ошибка KeyError

    my_car = request.session['my_car']

    # Получение значения сессии. Если значения не существует,

    # то вернётся значение по умолчанию ('mini')

    my_car = request.session.get('my_car', 'mini')

    # Передача значения в сессию

    request.session['my_car'] = 'mini'

    # Удаление значения из сессии

    del request.session['my_car']

    Copy to Clipboard

    Данное API имеет другие методы, которые большей частью используются для управления куки, связанных с сессией.  Например, существуют методы проверки того, что куки поддерживаются клиентским браузером, другие методы служат для установки и проверки предельных дат жизни куки, а также для очистки просроченных сессий из хранилища. 

    По умолчанию Django сохраняет данные сессии в базу данных и отправляет соответствующие куки клиенту только тогда, когда сессия была изменена, или удалена. Если вы обновляете какие-либо данные при помощи ключа сессии, как показано в предыдущем фрагменте, тогда вам не надо беспокоиться о процессе сохранения! Например:

    # Данное присваивание распознается как обновление сессии

    # и данные будут сохранены

    request.session['my_car'] = 'mini'

    Copy to Clipboard

    Если вы обновлять информацию внутри данных сессии, тогда Django не распознает эти изменения и не выполнит сохранение данных (например, если вы изменили "wheels" внутри переменной "my_car", как показано ниже). В таких случаях вам надо явно указывать, что сессия была изменена.

    # Объект сессии модифицируется неявно.

    # Изменения НЕ БУДУТ сохранены!

    request.session['my_car']['wheels'] = 'alloy'

    # Явное указание, что данные изменены.

    # Сессия будет сохранена, куки обновлены (если необходимо).

    request.session.modified = True

    вы можете изменить поведение сессий таким образом, чтобы они записывали любое своё изменение в базу данных и отправляли куки, при каждом запросе, путём установки SESSION_SAVE_EVERY_REQUEST = True, в файле настроек проекта

    Разворачивание сайта на сервере

    Даже когда разработка вашего сайта завершена (или "достаточно" завершена для начала публичного тестирования), то для публичного доступа вам надо его где-то разместить.

    До сего момента вы работали в каком-то рабочем окружении - чтобы получать отладочную и другую частную информацию, вы использовали веб-сервер Django в локальной сети при этом запускали сайт с (небезопасными) настройками разработки. Перед тем как разместить сайт публично, вы должны сделать следующее:

    • Сделать несколько изменений в настройках проекта.

    • Выбрать/Настроить окружение для хостинга приложения Django.

    • Выбрать/Настроить окружение для размещения статических файлов.

    • В целях обслуживания сайта настроить инфраструктуру для его развёртывания.

    Окружение развёртывания - это среда, которое предоставляет сервер, на котором вы будете размещать свой веб-сайт для публичного запуска и доступа. Данное окружение включает в себя:

    • Железо на котором будет запускаться сайт.

    • Операционную систему (Linux, Windows).

    • Языки программирования времени выполнения (скриптовые) и библиотеки, которые использует ваш сайт.

    • Веб-сервер, используемый для обслуживания страниц и другого контента (Nginx, Apache).

    • Сервер приложений, который передаёт "динамические" запросы между сайтом Django и веб-сервером.

    • Базу данных, от которой зависит ваш сайт.

    Сервер может быть вашим собственным с подключением к интернету по скоростному каналу, но более общим подходом является применение "облачных решений". Что действительно имеет значение, так это то, что ваш код запускается на некотором удалённом компьютере (возможно и "виртуальном"), в хостинговом дата-центре. Удалённый сервер обычно предоставляет определённый доступ к компьютерным ресурсам (процессору, оперативной памяти, памяти на жёстких носителях и так далее) и соединение с интернетом за некоторую цену.

    Такой тип удалённого доступа к вычислительному/сетевому железу называется Инфраструктура как Сервис (Infrastructure as a Service - IaaS). Множество IaaS поставщиков предлагают услуги по предустановке какой-либо операционной системы, на которую вы можете установить необходимые для вашего рабочего окружения компоненты. Другие поставщики предлагают вам выбрать уже готовые полноценные рабочие окружения, возможно, включающие в себя Django и настроенный веб-сервер.

    Некоторые провайдеры поддерживают Django как часть своего предложения Платформа как Сервис (Platform as a Service - PaaS). При данном виде хостинга вам не нужно беспокоиться о большей части окружения (веб-сервере, сервере приложений, балансировщике загрузки), так как сама платформа берёт это на себя (включая все моменты, касающиеся роста и развития вашего приложения). В данном случае развёртывание приложения является достаточно простой задачей, - вам нужно сконцентрироваться только на вашем приложении, а не на инфраструктуре.

    Некоторые разработчики выбирают более гибкое решение, предоставляемое IaaS, в то время как другие предпочитают иметь наименьшие накладные расходы и простое масштабирование, предоставляемое PaaS.

    Существует более 100 хорошо известных хостинг провайдеров, которые либо активно поддерживают, или работают с Django (их список можно увидеть в Django-дружественные хостинги). Данные поставщики предоставляют различные типы окружений (IaaS, PaaS), и различные уровни доступа к вычислительным и сетевым ресурсам, за разную цену.

    Некоторые вещи на которые надо обратить внимание при выборе хостинга:

    • Насколько требовательным к вычислительным ресурсам является ваш сайт.

    • Уровень поддержки горизонтального (добавление большего количества машин) и вертикального масштабирования (переход на более мощное железо), а также стоимость всего этого.

    • Где расположены дата-центры и, следовательно, откуда будет более быстрый доступ.

    • Время непрерывной работы хостинга, а также время и количество простоя.

    • Инструменты, которые предоставляются для управления сайтом — простота и безопасность их использования (SFTP и FTP).

    • Встроенные фреймворки для мониторинга вашего сервера.

    • Ограничения. Некоторые хостинги могут блокировать некоторые сервисы (например, электронную почту) . Другие предлагают только определённое количество часов "живого времени" за определённую цену, или небольшое количество места для данных.

    • Преимущества. Некоторые провайдеры могут предложить бесплатные доменные имена и поддержку сертификатов SSL, которые, в других случаях, должны были бы купить.

    • Что будет при истечении времени использования "бесплатного" хостинга, какова "стоимость" миграции на более "дорогие" тарифы и так далее?

    Хорошей новостью является то, что для того, чтобы начать существует достаточное количество компаний, которые предоставляют пробные "бесплатные" тарифы типа "evaluation" (для пробы), "developer" (разработка), или "hobbyist" (хобби). Всегда существуют ресурсы с ограниченным окружением, при использовании которых вам надо беспокоиться лишь о том, что они могут быть доступны лишь в течении определённого периода времени. Тем не менее, они являются отличным решением для тестирования сайтов с небольшим трафиком в реальном окружении, а также могут предоставлять простой доступ к платным ресурсам, в случае необходимости. Наиболее популярными провайдерами являются HerokuPython AnywhereAmazon Web ServicesMicrosoft Azure и так далее.

    Заключение

    Исходя из всего пройденного материала на счёт фрейморвка Django, я понял для себя многое на счёт языка программирования Python. Это один из универсальных фреймворков, которые дают массу возможностей в разработке отдельных приложений или же сайтов

    Как начинающий программист в своём пути книга под названием фреймворк Django был для меня закрыт, а после изучения всей информации которой я смог хочу в дальнейшем работать с ним и покорять новые вершины в своём аспект, это и касается создания игр, приложений чтоб сделать этот мир лучше, а также создания самых красивых сайтов.

    Список использованной литературы

    https://developer.mozilla.org/ru/docs/Learn/Server-side/Django/Introduction

    https://ru.wikipedia.org/wiki/Django

    1   2


    написать администратору сайта