[Демонстрационная ссылка]

Эй, вот ты где! Вы выполнили часть I? Не беспокойтесь, я дам краткий обзор этого. Вы можете проверить ссылку на репозиторий и демонстрацию части I в любое время. Итак, мы построили простую систему опросов, ничего особенного. На данный момент в нашем рассмотрении находятся 3 таблицы.

  • Опрос: относится к одному опросу. Если вы откроете демонстрационную ссылку, вы увидите, что некоторые опросы отображаются в виде списка.
  • Выбор : Итак, что за опрос без вариантов выбора? Откройте один опрос по той же ссылке, нажав кнопку голосования, и вы увидите несколько вариантов, из которых вы можете выбрать один и проголосовать за него.
  • Голосование : Мы все знаем, что это важно! Таким образом, всякий раз, когда вы голосуете за сообщение с выбором, создается новый объект Vote, соответствующий этому опросу и выбору, с отметкой времени вашего голосования. Вы можете голосовать за один опрос несколько раз, все они анонимны. Это отвечает за круговую диаграмму, расположенную под каждым опросом в демоверсии.

Ладно, хватит о части I. Давайте сразу перейдем к следующим шагам.

Что мы будем здесь делать? Мы собираемся сделать эти голоса неанонимными, поэтому один пользователь может проголосовать только один раз. А также, вы можете обновить свой голос. Таким образом, в основном, когда вы пытаетесь проголосовать за один опрос после того, как вы уже проголосовали за него, ваш выбор будет обновлен, вот и все. Прохладный! Давайте начнем.

Давайте сначала клонируем наш существующий репозиторий из части I. Запустите следующую команду, чтобы

клон git https://github.com/amritsaha607/SimplePoll.git

Откройте этот проект в своем любимом редакторе и выполните следующие команды последовательно внутри корня проекта (в основном там, где находится manage.py).

pip3 установить -r требования.txt

python3 manage.py миграция

Хорошо, наш проект настроен. Запустите сервер с помощью следующей команды и проверьте, видите ли вы localhost:8000.

сервер выполнения python3 manage.py

Вы не увидите многого, просто верхнюю панель навигации с надписью Simple Poll Application. Как на изображении ниже

Пора подумать о функционале. Вам нужно сделать голосование неанонимным. Что приходит на ум первым? (Пользователь! Пользователь!)

Итак, мы создадим модель пользователя и добавим базовую функцию регистрации и входа в систему, а также разрешим голосование в опросе только тогда, когда пользователь вошел в систему. Теперь подумайте, достаточно ли существующего объекта Vote для того, чтобы его можно было идентифицировать как уникальныйтолько с существующим объектом опроса? Без прав? Несколько пользователей также могут голосовать за один и тот же опрос! Да, вы правы, мы также добавим пользователя в нашу модель Vote, чтобы для одной пары ‹пользователь, опрос› был только один голос.

Идите вперед и отредактируйте файл models.py, как показано ниже.

Нажмите makemigrations и команду migrate, чтобы отразить изменения модели в БД.

python3 manage.py делает миграцию

python3 manage.py миграция

Кроме того, отредактируйте PollApp/admin.py, как показано ниже, чтобы добавить пользователя в панель администратора.

Теперь это сделано, осталось 3 шага для завершения базовой настройки пользователя.

  1. Создайте несколько форм в пользовательском интерфейсе для регистрации и входа в систему.
  2. Добавьте некоторые функции для регистрации и входа пользователей
  3. Подключите эти функции к пользовательскому интерфейсу, чтобы завершить авторизацию через веб-сайт.

Хорошо, я добавил несколько основных форм в файл base.html, и вы можете ПРОСТО отредактировать его, как показано ниже.

Теперь перейдите на localhost: 8000, и вы увидите кнопки «Регистрация» и «Войти» на панели навигации, вы можете попробовать нажать их. Они дают вам какие-то всплывающие окна, содержащие формы регистрации и входа? Большой!! Вы завершили Часть 1.

Теперь мы добавим некоторые функции в серверную часть для обработки регистрации и входа пользователей. Итак, вот как это будет происходить. Будет отдельное представление (так же, как класс HomeView), оно будет указывать на конечную точку («/auth/») и будет принимать только почтовые запросы. Это примет имя пользователя, пароль и authentication_mode в качестве параметров, и на основе этих параметров будет решать, что делать с этими входящими данными.

Давайте перейдем к PollApp/views.py и PollApp/urls.py и добавим следующий класс для обработки входящих почтовых запросов.

Ух! Позвольте мне немного разбить его. Любой почтовый запрос, который идет в «/auth», попадает в метод post в классе AuthView. Мы вышлем режим, имя пользователя и пароль для обработки запроса. register, login & logout — это 3 служебные функции внутри метода post для соответствующей обработки запроса. Не имеет смысла? Подождите минутку, позвольте мне также добавить javascript, чтобы вы могли видеть, как они соединяются и общаются друг с другом. Отредактируйте свой base.html, как показано ниже, и создайте каталог с именем static внутри вашего каталога PollApp. А внутри статики создайте auth.js для обработки операций аутентификации.

Вот и все, сохраните их и зайдите в браузер, и попробуйте зарегистрировать одного пользователя. Теперь перейдите в панель администратора (сначала создайте суперпользователя с помощью python3 manage.py createsuperuser, если вы еще этого не сделали) и проверьте, создан ли пользователь. (Это будет под пользователями PollApp, а не под пользователями аутентификации django). Так это работает? Хорошо, остался последний шаг для завершения процесса аутентификации пользователя! На данный момент мы не будем знать, зарегистрирован ли пользователь или успешно вошел в систему, поэтому нам нужно немного изменить вид сайта, когда пользователь вошел в систему. Мы унаследуем это на каждой странице. Хорошо, мы добавим новый файл PollApp/utils.py и отредактируем наш PollApp/views.py, как показано ниже.

Таким образом, мы передаем наши пользовательские переменные во внешний интерфейс, когда они вошли в систему. Теперь нам просто нужно добавить некоторые условия и функции выхода из системы. Отредактируйте base.html и auth.js, как показано ниже.

Теперь вы можете попробовать войти и выйти из системы в браузере. Прохладный! Система аутентификации готова. Теперь мы сделаем последние 2 шага.

  1. Добавьте несколько фиктивных опросов и вариантов
  2. Добавить функциональность для голосования

Мне лень, поэтому я просто скопирую существующие опросы и варианты ответов из моей предыдущей статьи (часть I) этой. Хорошо, теперь, когда я готов с настройкой, давайте добавим функцию голосования. Теперь моя домашняя страница выглядит так, как показано ниже (с зарегистрированным пользователем).

Что ж, пора добавить функционал. Кроме того, мы удалим условное представление круговой диаграммы в poll.html. Отредактируйте файл views.py и poll.html, как показано ниже.

В poll.html мы только что удалили окончательные условия {% if %}.

Сайт работает нормально? Наслаждаться!

Как всегда, вот ссылка на репозиторий github

А вот и демо