Реализовать систему аутентификации пользователей. Для этого создаётся форма регистрации и форма для входа и выхода на сайте timthewebmaster.com.
Форма регистрации должна содержать следующие элементы:
имя пользователя ( требовать обязательно )
почту пользователя ( требовать обязательно )
пароль пользователя ( требовать обязательно )
повтор пароля пользователя ( требовать обязательно )
поле об самом пользователе
запрос аватарки пользователя
кнопки регистрации соответственно
Форма входа должна состоять только из двух полей:
имя пользователя
пароля пользователя
Ещё должна быть кнопка, которая бы позволяла выйти из режима аутентифицированного пользователя.
Решение
Подключение jQuery
Для решения данного кейса мне потребуется подключить одну библиотеку JS, jQuery. Это популярная , простая библиотека. И изменить настройки безопасности сайта написаного на django. То есть подправить файл settings.py
Предварительная настройка django для регистрации пользователей
На самом деле это необязательный шаг, ибо это не помешает общению сервера с клиентом. Но ради безопасности и уверенности, что никакие хакеры не взломают базу данных сервера и не получат конфиденциальные данные пользователей мы это настроим.
В файле settings.py добавь
В приложении которое выполняет регистрацию открой urls.py и добавь 2 путя
Пишем ajax запрос для формы регистрации
Теперь пишется JS-скрипт с запросом.
При успехе, то есть если все проверки пройдены, по типу длины пароля или существующей почты, мы вставим текст для обратной связи с пользователем и перенаправим на страницу входа.
При неудаче, мы сообщим об этом пользователю тоже.
Пишем функцию обработки ajax формы регистрации
В главе предварительной настройки мы импортировали в utls.py функцию signup_verify давай определим её
Вот таким образом я выявляю “ошибки” форм в django.
Собираем всё вместе в html шаблоне. Страница регистрации
Теперь, чтобы всё заработало, мне нужно создать шаблон, который бы загрузил соответствующий скрипт и стили, использовал токен.
Вот код формы
А в самом низу перед тегом body вставить написаный заранее скрипт
Донастраиваем URLs для формы аутентификации пользователей
Нужно добавить 2 дополнительных путя и импортировать соответствующие функции
Пишем ajax запрос для формы аутентификации пользователя
Принцип тот же что и при регистрации. Указываем тип запроса, url-запроса и данные которые хотим передать. Ну и дополнительно, конечно, обратная связь для пользователя. Чтобы он знал об ошибках которые он допустил при заполнении формы. Всё это в отдельном файле login.js
Пишем функцию/форму обработки ajax запроса аутентификации пользователя
Вот готовые функции для обработки и проверки данных введённых пользователем
Функция выхода пользователя. Я просто очищаю текущую сессию пользователя на моём сайте. И перенаправляю на страницу входа на сайт.
Пишем шаблон аутентификации на сайт
Ну и конечно мой шаблон для входа на сайт
И конечно же незабываем вставить скрипт в шаблон. Написаный нами login.js и jQuery библиотеку
Вывод
В данном кейсе я продемонстрировал две основные формы для системы аутентификации пользователей. Форму регистрации и форму входа. Не самое сложное дело, особенно если знаешь что делаешь.
Сразу хочу оговориться, я не добавлял сюда капчу или проверку почты по одной простой причине. Это аутентификация на моём сайте и мне этого не требовалось. В моей деятельности важно не количество пользователей, а их качество. То есть, если человек захочет связаться со мной он свяжется, если нет ну это его дело.
Дополнительные материалы
Github репозиторий
Репозиторий, который я использую чтобы разрабатывать данный сайт
Сразу оговорюсь, что система аутентификации, которую мы с тобой будем писать не основана на встроеном приложении django, django.contrib.auth . Это будет отдельное приложение с отдельной моделью к ней.
Здесь ты узнаешь как написать свой API используя Django REST API. Добавляется он для того, чтобы построить API для доступа со стороны клиента (фронтенда). Так же демонстрирую как данный API …
Использованные термины
Конструктор сайтов ⟶ Это приложение или веб сервис, с набором готовых решений и шаблонов, для создания сайтов.
Django модель ⟶ Это менеджер баз данных во фреймворке Django. Реализованно в виде класов и наследования в Python
Джанго фреймворк ⟶ Это высокоуровневый веб-фреймворк на языке программирования Python, который позволяет разработчикам создавать веб-приложения быстрее и с меньшими затратами на время благодаря своим мощным инструментам и встроенным функциям. Он был разработан для упрощения разработки сложных веб-сайтов и предоставляет множество «из коробки» функций
Джанго мидлвари ⟶ Это компонент, выполняющийся на уровне обработки запросов и ответов в веб-приложении. Мидлвары позволяют обрабатывать запросы и ответы глобально, применяя различные функции к каждому запросу, прежде чем он достигнет представления (view), или к каждому ответу перед его отправкой клиенту.
Вебсайт ⟶ Это совокупность связанных между собой веб-страниц, доступных через интернет и имеющих одно общее доменное имя. Каждый веб-сайт может содержать текстовую информацию, изображения, видео и другие мультимедийные элементы. Веб-сайты могут выполнять различные функции, включая предоставление информации, общение, онлайн-торговлю и множество других взаимодействий.
Релевантные вопросы
Почему, создавая сайт ты предпочёл django, а не конструкторы сайтов ?
Довольно сложный вопрос. Наверное я люблю разбираться и копаться в сложных вещах, хотя вроде бы и не стоило. Тут похожая история с играми. Вместо того, чтобы делать игры на игровых движках, я делал свой собственный, **DI**. Ну, я просто не ищу простых путей ;)
Я не переношу язык шаблонов Django. Мне обязательно его использовать?
Я думаю, что этот шаблонизатор — лучшее, что когда-либо было, но я знаю, что выбор языка шаблонов — это почти религия. В Django нет ничего, что требовало бы использования языка шаблонов, так что если вы привязаны к Jinja2, Mako или чему-то еще, то это нормально.