Содержание
Как создать блог на Django с опросами и тестами. Часть 2
Введение
В предыдущей части мы разобрали шаблон для нашего блога, выбрали виртуальную машину и запустили на ней нативный веб-сервер Django. Однако он предназначен только для тестирования и запуска приложений во время разработки. Для обработки запросов в продакшене нужно настроить Nginx и WSGI Gunicorn. В этой статье коллеги из Proglib показывают, как это сделать.
Ознакомиться с блогом можно по ссылке.
Добавляем новые фичи
Перед запуском блога в продакшен лучше убедиться, что необходимая функциональность реализована. В первой части мы собрали лишь базовые Django-приложения — users и blog. Но остальные фичи мы пока не добавили — пора это исправить.
Ниже разбираем шаблоны для создания опросов и тестов в блоге на Django. Делайте форк исходного кода, модифицируйте и предлагайте свои улучшения!
Приложение polls
В приложении polls сосредоточена вся функциональность, связанная с проведением опросов. Чтобы его создать, нужно запустить управляющий скрипт manage.py и зарегистрировать новое приложение.
manage.py startapp polls
Также важно зарегистрировать новое приложение в корневой директории проекта, в конфигурационном файле settings.py.
Чтобы пользователь мог подключиться к приложению, нужно настроить маршрутизацию — перейти в корневую директорию проекта и зарегистрировать пути в конфигурационном файле urls.py.
path('', include('polls.urls'))
Собственные маршруты приложения polls будут храниться в файле users/urls.py — их можно найти и модифицировать по ссылке.
Приложение polls визуализирует результаты опросов с помощью библиотеки Chart.j: логика построения диаграмм описана в функции results
.
def results(request, question_id): profile = request.user.profile question = get_object_or_404(Question, pk=question_id) labels = [] data = [] votes = question.choice_set.select_related('question').all() for item in votes: labels.append(item.name) data.append(item.votes) context = { 'question': question, 'profile': profile, 'labels': labels, 'data': data} return render(request, 'polls/results.html', context)
По возможности выносите логику валидаторов из views в отдельные модули.
Все необходимые шаблоны находятся в директории polls/emplates/polls:
- question.html — выводит вопрос с вариантами ответа,
- questions.html — обеспечивает постраничный вывод всех созданных опросов,
- results.html — показывает результаты голосования.
Метод user_voted класса Question проверяет, принимал ли пользователь участие в опросе (проголосовать можно только один раз). Логика проведения опроса описана в polls/views.py. Функция vote предусматривает случаи, когда пользователь не выбрал ни один вариант ответа, и когда он уже принимал участие в опросе.
Приложение quizzes
Приложение quizzes обеспечивает создание и обработку двух типов опросов — с одним и с несколькими правильными ответами. Аналогичным образом создаем его, регистрируем в settings.py и инициализируем в urls.py корневой директории. Маршруты самого блога находятся в quizzes/urls.py, а шаблоны — в quizzes/templates/quizzes.
Модуль опросов использует четыре шаблона:
- display.html — показывает вопрос и варианты ответа,
- partial.html — обеспечивает — совместно с JS-скриптом в файле display.html — вывод фидбека без перезагрузки страницы,
- quizzes.html — отвечает за постраничный вывод созданных тестов.
- results.html — выводит результаты прохождения теста.
Класс Question
в quizzes/models.py содержит два вспомогательных метода:
get_answers
— возвращает правильные ответы, в зависимости от типа вопроса,user_can_answer
— определяет, отвечал ли пользователь на этот вопрос ранее.
Функции представления в quizzes/views.py отвечают за последовательный вывод вопросов теста и оценку ответов пользователя. Сохранение статистики по правильным и неверным ответам реализовано с помощью класса Result
. При этом обновление значений в базе данных проводится с помощью объекта
F
.
result, created = Result.objects.get_or_create(user=request.user, quiz=quiz) if is_correct is True: result.correct = F('correct') + 1 else: result.wrong = F('wrong') + 1
Готово — теперь можно отправить блог в продакшен!
Обновление файлов на сервере
В предыдущей части мы уже арендовали виртуальный сервер с гибкой производительностью ядра и загрузили код проекта. Теперь его необходимо обновить — задеплоить новые приложения polls и quizzes. Для этого нужно запушить их в репозиторий на GitHub, а после — сделать git pull
на стороне сервера.
от 280 ₽/мес.
Настройка Nginx и Gunicorn
При обслуживании Django-приложения Nginx выступает в качестве обратного прокси-сервера: отвечает за обработку входящих запросов на 80 порт и переадресацию их в Gunicorn.
Gunicorn же исполняет роль сервера приложений: отвечает за запуск Django, обработку запросов и генерацию ответов. В результате система работает по такой схеме:
- клиент отправляет запрос на сервер Nginx,
- Nginx пересылает (проксирует) запрос в Gunicorn с помощью директивы proxy pass,
- Gunicorn передает пользовательский запрос в Django,
- Django обрабатывает запрос, генерирует ответ и отправляет в Gunicorn,
- Gunicorn отправляет результат в Nginx, который перенаправляет его клиенту.
При такой конфигурации Nginx обеспечивает быструю и эффективную обработку запросов, а Gunicorn позволяет запускать несколько процессов для параллельной обработки запросов и отвечает за автоматический перезапуск и плавное завершение рабочих процессов.
Установка и тестирование Gunicorn
В установке нет ничего сложного: достаточно активировать виртуальное окружение и установить необходимые зависимости.
source blogitenv/bin/activate pip install gunicorn
Проверьте и при необходимости измените настройки config/settings.py, как было показано в предыдущей части. А после создайте суперпользователя и базу данных и соберите статические файлы.
python3 manage.py migrate python3 manage.py createsuperuser python3 manage.py collectstatic
Теперь можно протестировать работу Gunicorn, запустив его в связке с Django-приложением.
gunicorn --bind 0.0.0.0:8000 config.wsgi
Все работает: к блогу можно подключиться по IP-адресу через 8000-порт. Но сейчас веб-сервер запускается вручную. В продакшене это должно происходить автоматически — нужно настроить Gunicorn и Nginx для совместного обслуживания Django-приложения.
Настройка Gunicorn
Для автоматизации запуска Django-приложения сначала нужно создать конфигурационные файлы gunicorn.socket и gunicorn.service. Начнем с первого:
sudo nano /etc/systemd/system/gunicorn.socket
[Unit] Description=Gunicorn socket [Socket] ListenStream=/run/gunicorn.sock [Install] WantedBy=sockets.target
Содержимое файла gunicorn.socket
Теперь создадим gunicorn. service и укажем на виртуальное окружение, которое должен запускать веб-сервер.
sudo nano /etc/systemd/system/gunicorn.service
[Unit] Description=Gunicorn daemon Requires=gunicorn.socket After=network.target [Service] User=root Group=www-data WorkingDirectory=/root/blogit ExecStart=/root/blogitenv/bin/gunicorn \ --access-log file - \ --workers 5 \ --bind unix:/run/gunicorn.sock \ config.wsgi:application [Install] WantedBy=multi-user.target
Содержимое файла gunicorn.service
Теперь можно запустить Gunicorn и проверить его статус.
sudo systemctl start gunicorn.socket sudo systemctl enable gunicorn.socket sudo systemctl start gunicorn.service sudo systemctl enable gunicorn.service sudo systemctl status gunicorn
Правильно настроенный сервер вернет статус running и выведет информацию о workers — параллельно запущенных инстансах Django-приложения. В конфигурационном файле gunicorn.service мы зарегистрировали пять «воркеров» — Gunicorn должен их запустить.
Проксирование запросов
Последним этапом нужно перейти в настройки сервера Nginx и настроить проксирование запросов с 80 порта на Gunicorn.
sudo nano /etc/nginx/sites-available/blogit
server { listen 80; server_name 94.26.224.162; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location = /favicon.ico { alias /root/blogit/static/favicon.ico; } location /static/ { alias /root/blogit/static/; } location /media/ { alias /root/blogit/media/; } location / { include proxy_params; proxy_pass http://unix:/run/gunicorn.sock; } }
Содержимое файла /etc/nginx/sites-available/blogit. В качестве server_name укажите публичный IP-адрес своей виртуальной машины.
Чтобы применить конфигурации, свяжите директивы Nginx — sites-available и sites-enabled — с помощью символической ссылки:
sudo ln -s /etc/nginx/sites-available/blogit /etc/nginx/sites-enabled/
Обратите внимание: если в конфигурационных файлах в дальнейшем будет обнаружена ошибка, ссылку необходимо создать заново, но уже с флагом -sf.
sudo ln -sf /etc/nginx/sites-available/blogit /etc/nginx/sites-enabled/ sudo systemctl reload nginx
Кроме того, если вы разворачиваете проект не под root, нужно назначить права доступа для директорий static и media.
chown -R django_user:www-data /var/www/blogit/static/ chown -R django_user:www-data /var/www/blogit/media
На этом настройка Nginx и Gunicorn завершена. Теперь вы можете открыть сайт через браузер. При желании вы можете арендовать доменное имя и сгенерировать SSL-сертификат.
Заключение
Мы все еще разработали лишь малую часть функциональности блога. Например, можно бесплатно протестировать почтовый сервис Selectel и настроить восстановление пароля с помощью email-сообщений. Делайте форк проекта и предлагайте свои улучшения!
PythonОблачные серверы
Создать блог — Помощь Pixpa
Искать
Вы можете создать блог на своем веб-сайте Pixpa и выражать себя с помощью комбинации изображений, слов и видео.
Блог можно использовать, чтобы поделиться своим путешествием с пользователями вашего сайта, публикуя истории, сообщения и объявления. Функция ведения блога предлагается на всех Планы.
Также проверьте: Обзор блога.
Pixpa позволяет добавлять сообщения в блог, теги, выдержки и категории. Вы также можете управлять комментариями и авторами сообщений в блоге.
Добавьте блог на свой сайт
- Enter добавить блог (1) в строке поиска.
- В результатах нажмите на Добавить Блог вариант (2) под Действия.
- Из Добавить пункт меню всплывающее окно, выберите Блог опцию.
- Укажите имя для вашего нового блога.
- Теперь вы можете начать добавлять сообщения в блог и получить доступ к обзору блога, настройкам и разделам дизайна, чтобы настроить свой блог.
Также проверьте: Блог Дизайн.
Примечание: Вы увидите недавно добавленную ссылку на блог в нижней части меню вашего сайта. Вы можете перетащить ссылку на блог в нужное место в меню веб-сайта.
Также см: Ссылки на последовательности в меню сайта.
Наконечник: Вы можете добавить несколько блогов на свой сайт. Узнать больше.
Обзор блога
Теперь вы находитесь на начальном экране нового блога, в котором нет постов.
Вот как это выглядит:
- блог: Здесь отображается название блога.
- Посмотреть: Просмотрите свой блог.
- + Добавить пост: Добавьте новую запись в блог. Проверьте: Добавить сообщение в блоге.
- Сообщения в блоге: Управление всеми сообщениями в блоге (добавление/редактирование/удаление сообщений в блоге). Проверьте: Страница всех сообщений.
- Категории блога: Управление категориями блога. Проверьте: Блог категории.
- Настройки: Управление настройками блога.
Проверьте: Настройки блога.
- Авторы: Управление авторами блога. Проверьте: Авторы блога.
- Новостная лента: Получите RSS-канал блога. Проверьте: RSS-канал блога.
- Комментарии: Управление комментариями в блоге. Проверьте: Комментарии блога.
Наконечник: RSS-канал позволяет посетителям вашего сайта подписываться на сообщения вашего блога и получать обновления. Это также помогает облегчить вашу работу, автоматически публикуя вашу недавнюю публикацию в блоге на различных платформах распространения кросс-контента.
Метки: добавить блогСоздать блог
Не можете найти то, что ищете?
Свяжитесь с экспертом Pixpa.
Свяжитесь с нами
Как создать блог
Добавление блога на ваш веб-сайт — отличный способ привлечь трафик на ваш веб-сайт и расширить список рассылки.
Как добавить страницу блога
Чтобы создать страницу блога на своем веб-сайте, перейдите на страницу Сайты и нажмите на вкладку Веб-сайты . Затем:
Откройте свой сайт в конструкторе сайтов.
На боковой панели нажмите вкладку Pages .
Нажмите Создать новую , чтобы добавить новую страницу.
Выберите Блог в качестве нового типа страницы.
Выберите имя для страницы вашего блога. Название — это то, как оно будет отображаться в навигации вашего сайта.
Совет: Если вы не хотите, чтобы страница вашего блога отображалась на опубликованном веб-сайте, установите флажок Пометить как черновик страницы и Скрыть страницу из навигации . Это сохранит ваши изменения без публикации страницы на вашем веб-сайте.
После создания вы можете редактировать Настройки блога на боковой панели на вкладке Контент .
Чтобы изменить настройки оформления страницы блога, нажмите вкладку Настройки на боковой панели.
Каждый создаваемый веб-сайт может иметь одну страницу блога.
Как добавлять/редактировать сообщения в блоге
Сообщения в блоге можно найти и создать на вашем веб-сайте 9Страница 0009 Обзор на вкладке Блог .
Чтобы создать публикацию:
Нажмите Создайте публикацию и дайте ей название.
Затем вы можете отредактировать Заголовок сообщения , Отрывок, и Избранное изображение вашего сообщения в блоге. Если вы создали категории, они также появятся здесь.
Выберите, хотите ли вы включить тепловую карту кликов , чтобы отслеживать, где читатели нажимают на страницу вашего блога.
Щелкните Сохранить и изменить содержимое .
Теперь вы можете начать писать сообщение в блоге, введя его непосредственно в редактор сообщений блога.
Как добавить блоки в запись блога
Существует множество типов блоков, которые вы можете использовать в сообщениях блога:
Текст – добавьте текст к сообщению блога
Изображение – Вставьте изображение из файлового менеджера
Карусель изображений
Разделитель – Разделите содержимое блога 90 003
Таблица – вставьте таблицу в сообщение блога.
Код – Настройте свой пост в блоге, вставив дополнительный код
Форма регистрации – Пригласите читателей присоединиться к вашему списку рассылки
Видео – Вставьте видео в сообщение блога
Маленькое изображение и контент
1 столбец контента
2 столбца содержания
3 столбца содержания контент
Кнопка
Ссылки на социальные сети
Поделиться в социальных сетях 9 0003
Чтобы добавить блоки в запись блога, нажмите кнопку + или наведите указатель мыши на поле слева от текста, пока не появится значок + .
Если вы довольны своим контентом, вы можете нажать Сохранить и опубликовать, чтобы немедленно опубликовать свое сообщение. Если вы не хотите публиковать свою запись в блоге сразу, вы можете щелкнуть стрелку раскрывающегося списка, чтобы сохранить и запланировать публикацию в блоге на потом, или сохранить публикацию в блоге как черновик.
Как опубликовать запись в блоге
Чтобы опубликовать свой пост, нажмите Сохраните и опубликуйте в редакторе сообщений блога или перейдите на вкладку Блог и нажмите кнопку Опубликовать на сообщении, которое вы хотите опубликовать на своем веб-сайте.
Вы можете опубликовать сообщение сейчас или позже.
В любое время, когда вы хотите добавить или изменить сообщения в блоге, вы можете просто вернуться на вкладку Блог своего веб-сайта, чтобы редактировать и создавать сообщения без необходимости открывать конструктор веб-сайтов.
Вы также можете отменить публикацию сообщений в блоге, нажав кнопку Кнопка «Отменить публикацию» .
Чтобы получить советы о том, как создавать контент для своего нового блога, ознакомьтесь с нашим полным руководством о том, как создавать контент, который будет интересен людям.
Как изменить дату публикации в блоге
Если вы переходите с другой платформы и хотите повторно опубликовать блоги с их исходными датами, вы можете изменить дату, отображаемую при создании сообщения в блоге. Чтобы изменить дату сообщения в блоге:
Перейдите к сайтов стр.
Нажмите кнопку Обзор на веб-сайте, содержащем подготовленный пост в блоге.
Выберите вкладку Блог .
Найдите сообщение в блоге, для которого вы хотите изменить дату.
Нажмите стрелку раскрывающегося списка рядом с кнопкой Изменить и выберите Подробности .
Прокрутите вниз до раздела Сообщение создано и измените дату.
Нажмите Обновить сведения .
Примечание: Дата создания сообщения можно редактировать только в опубликованных сообщениях.
Как создавать и управлять категориями блога
Чтобы добавить и изменить категории для страницы блога:
Перейдите к странице Sites .
Перейдите на вкладку Веб-сайты и выберите веб-сайт, содержащий блог, к которому вы хотите добавить категории.
Перейдите на вкладку Блог .
Нажмите кнопку Управление категориями .
Нажмите Создайте категорию .
Выберите название для новой категории и нажмите Создать .
Название — это то, как категория будет отображаться на вашем сайте.
Выберите Slug для страницы вашей категории.
Примените желаемые настройки SEO и Настройки социальных сетей .
Нажмите Сохранить .
Теперь вы можете классифицировать свои сообщения в блоге на основе контента, который вы публикуете.
Чтобы добавить существующую запись в блоге в только что созданную категорию:
Вернитесь к своим записям в блоге.
Щелкните стрелку раскрывающегося списка рядом с кнопкой Изменить и выберите Подробности .
Прокрутите вниз, чтобы выбрать категории, и выберите категорию, в которую вы хотите добавить свой пост в блоге.
Как добавить якорные ссылки в блог
Якорные ссылки позволяют читателям переходить к содержимому, которое бросается в глаза. Чтобы добавить привязки к блогу:
Нажмите символ + в редакторе блога и выберите Anchor.
Назовите якорь, чтобы его было легко найти на следующем шаге
Добавьте оглавление, изображение или блок кнопок.
В настройках блока откройте выпадающее меню Link и выберите Anchor.
Выберите якорь, на который вы хотите сослаться. Вы даже можете использовать навигацию в заголовке как ссылку на свой блок Anchor !
Узнайте, как построить блог-бизнес и избежать обыденности
Нами движут результаты наших студентов
«Я довольно быстро увеличил свой доход до 4000-5000 долларов, в основном за счет изменения всех последовательностей электронной почты. В Six-цифровом Blogger есть модуль последовательности электронной почты, который изменил мою жизнь».
Натали, теперь сертифицированный лайф-коуч, зарабатывает более 40 000 долларов в месяц.
— Natalie Bacon.com
«Я не маркетолог. Я финансовый эксперт. Я боролся со своей страницей продаж. Я реализовал то, что вы сказали на вашем курсе, и в течение недели я увидел увеличение своих продаж на 25%».
Бола зарабатывает шестизначные суммы в месяц на своем финансовом блоге для женщин.
— Бола Сокунби, Clever Girl Finance
«Я хотела творчески объединить весь свой профессиональный опыт (юридический, бизнес, коучинг и преподавание), который позволил бы мне существенно изменить жизнь другие, сохраняя при этом доступность моих продуктов и услуг».
Амира завела свой блог и за первый месяц заработала деньги. Сейчас она зарабатывает более 20 000 долларов в месяц на блогах.
— Амира Лоу, Самостоятельный Гуру
«Я сосредоточилась на создании продуктов и воронок для моей ниши в физиотерапии, и это принесло более 1000 долларов в месяц только за первые пару месяцев!»
Тим теперь зарабатывает более 8000 долларов в месяц на своем блоге.
— Тим Фратичелли, PT Progress
Простой и интуитивно понятный путь к успеху в блогах
Шаг 1
Создание и создание блога
- Как создать блог (пошаговое руководство)
- 101 тема блога, которые действительно приносят деньги
- 6 лучших блог-сайтов и платформ
- Дизайн блога Вдохновение и советы
Шаг 2
Расширьте свою аудиторию
- Как написать убийственный пост в блоге
- SEO-оптимизация блога для начинающих
- Как создать список адресов электронной почты
- Трафик Pinterest для блоггеров
Шаг 3
Заработок $$$
- Как заработать на блогах (10 шагов)
- Партнерский маркетинг для блоггеров
- Лучшие рекламные сети для блоггеров
- Самые успешные блоги (самые высокооплачиваемые)
Мы «нормальные» люди с БОЛЬШИМИ мечтами
Жизнь сейчас кажется тебе скучной? Например, пытаться нарисовать красивую картинку коробкой серых мелков?
Как и многие из вас, вероятно, чувствуют.