Рубрики
Без рубрики

Создайте приложение для подписки на новостной и новостей с помощью Django

Недавно я выпустил пакет Django под названием Django-Newsfeed. Это позволяет легко построить … Tagged with Python, Django, Tutorial, WebDev.

Я недавно выпустил пакет Django под названием django-newsfeed Анкет Это позволяет легко создать веб -сайт подписки на куратор новостей и подписку на новостную рассылку.

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

Требования:

  • Django.2
  • Django-Newsfeed
  • сельдерей
  • сельдерей
  • Редис

Настройка проекта:

Давайте начнем

  1. Создайте VirtualENV и установите требования:
$ mkvirtualenv example-newsfeed     # you can use virtualenv instead of virtualenvwrapper
$ mkdir django-newsfeed
$ cd django-newsfeed/

$ pip install celery Django django-celery-beat django-newsfeed redis

** Вам нужно установить Redis в вашей системе. Вот руководство

  1. Настройка Django:
$ django-admin.py startproject example_newsfeed .    # dot (.) is added to create project on current directory
$ python manage.py migrate
  1. Теперь добавьте Новости и сельдерей-бит для установки приложений.
INSTALLED_APPS = [
    ...
    'django_celery_beat',
    'newsfeed',
]
  1. Добавить django-newsfeed URLS для проекта urls.py Анкет
urlpatterns = [
    ...
    path('newsfeed/', include('newsfeed.urls', namespace='newsfeed')),
    ...
]
  1. Создать суперпользователь и запустить сервер разработки Django
$ python manage.py createsuperuser
$ python manage.py runserver       # http://127.0.0.1:8000/
  1. Перейдите на страницу администратора Django, входите в систему и создайте сообщения, проблемы и информационные бюллетени.

Теперь вы можете перейти к:

  • Последняя_иссия: Новостная лента/
  • visele_list: Новостная лента/выпуски/
  • angue_detail: НОВОСТИКА/ПРОБЛЕМЫ//
  • Newsletter_subscribe: НОВОСТИНА/ПОДПИБА/
  • Newsletter_Subscription_Confirm: НОВОСТИКА/ПОДПИСА/ПРЕДИТРЕНИЕ//
  • Newsletter_unsubscribe: НОВОСТИ/НЕОБРАЖЕНИЕ/
  1. Переопределите шаблоны по своему вкусу. Чтобы узнать больше об этом Нажмите здесь Вот Код для этого урока Анкет Вы можете увидеть переопределенные шаблоны здесь. Он использует начальную загрузку, чтобы стилизовать шаблоны.

Настройка Отправка информационных бюллетеней:

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

Настройка сельдерея

  1. Настройка Сельдерей отсюда Анкет

  2. Добавить настройки сельдерея для Redis в настройки.py

# Celery Settings
CELERY_BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = TIME_ZONE
  1. Добавить настройки электронной почты в settings.py
# Email Settings
EMAIL_HOST = 'test_host'
EMAIL_HOST_USER = 'test_user'
EMAIL_HOST_PASSWORD = 'test_password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

** Измените это для производственного сервера Django ссылка

  1. Создайте приложение Django с именем основной
$ python manage.py startapp core
  1. Теперь добавьте ядро для установки приложений.
INSTALLED_APPS = [
    ...
    'core',
]
  1. Создать tasks.py Файл в ядро Справочник приложений. Вставьте этот код в файл.
from celery.decorators import task

from newsfeed.models import Newsletter
from newsfeed.utils.send_newsletters import send_email_newsletter


@task(name="send_email_newsletter_task")
def send_email_newsletter_task(newsletters_ids=None, respect_schedule=True):
    newsletters = None

    if newsletters_ids:
        newsletters = Newsletter.objects.filter(
            id__in=newsletters_ids
        )
    send_email_newsletter(
        newsletters=newsletters,
        respect_schedule=respect_schedule
    )

** Это позволит вам вызвать Emailnewslettersender Предоставлено Django-Newsledtter в задаче сельдерея.

Теперь вы можете отправить информационные бюллетени со страницы администратора Django.

  1. Добавьте этот код в celery.py Файл в свой каталог проекта. ( celery.py Файл должен быть создан после шага 3)
app.conf.beat_schedule = {
    'send_email_newsletter': {
        'task': 'send_email_newsletter_task',
        # http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html
        # run this task every hour
        'schedule': crontab(minute=0, hour='*'),
    }
}

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

  1. Добавьте этот код в admin.py Файл на ядро Справочник приложений.
from django.contrib import admin, messages

from newsfeed.admin import NewsletterAdmin
from newsfeed.models import Newsletter

from .tasks import send_email_newsletter_task

admin.site.unregister(Newsletter)


@admin.register(Newsletter)
class NewsletterAdmin(NewsletterAdmin):

    def send_newsletters(self, request, queryset):
        newsletter_ids = list(queryset.values_list('id', flat=True))

        send_email_newsletter_task.delay(
            newsletters_ids=newsletter_ids,
            respect_schedule=False
        )
        messages.add_message(
            request,
            messages.SUCCESS,
            'Sending selected newsletters(s) to the subscribers',
        )

** Это будет переоценить действие администратора для отправки информационных бюллетеней для использования задачи сельдерея.

Исходный код для этого учебника здесь: https://github.com/saadmk11/test-django-newsfeed

Видео демонстрация:

Более:

Вы можете узнать больше обо всей конфигурации для django-newsfeed на GitHub.

Отступить пакет отсюда: Django-Newsfeed

Вывод:

Если вы используете этот пакет, пожалуйста, не стесняйтесь предоставить отзыв о Twitter или в разделе комментариев. Если у вас есть какие -либо предложения или вы хотите внести свой вклад в этот пакет Пожалуйста, создайте Выпуск и читайте Руководство по взносу Анкет

Обратная связь и вклад всегда приветствуются.

Оригинал: “https://dev.to/saadmk11/create-a-news-curator-and-news-subscription-app-using-django-1ghj”