Django를 사용하여 뉴스 큐레이터 및 뉴스 구독 앱 만들기
이를 통해 뉴스 큐레이터 및 뉴스레터 구독 웹사이트를 구축하기가 정말 쉬워집니다.
오늘은 뉴스 큐레이터 웹사이트나
기존 웹 사이트에 뉴스 피드 구독 서비스를 추가하십시오.
요구 사항:
설정 프로젝트:
시작하자
$ 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가 설치되어 있어야 합니다. 여기는 guide
$ django-admin.py startproject example_newsfeed . # dot (.) is added to create project on current directory
$ python manage.py migrate
newsfeed
및 celery-beat
를 추가합니다.INSTALLED_APPS = [
...
'django_celery_beat',
'newsfeed',
]
django-newsfeed
URL을 프로젝트urls.py
에 추가합니다.urlpatterns = [
...
path('newsfeed/', include('newsfeed.urls', namespace='newsfeed')),
...
]
$ python manage.py createsuperuser
$ python manage.py runserver # http://127.0.0.1:8000/
이제 다음으로 이동할 수 있습니다.
latest_issue:
newsfeed/
issue_list:
newsfeed/issues/
issue_detail:
newsfeed/issues/<slug:issue_number>/
newsletter_subscribe:
newsfeed/subscribe/
newsletter_subscription_confirm:
newsfeed/subscribe/confirm/<uuid:token>/
newsletter_unsubscribe:
newsfeed/unsubscribe/
다음은 code for this tutorial 입니다.
여기에서 재정의된 템플릿을 볼 수 있습니다. 부트스트랩을 사용하여 템플릿의 스타일을 지정합니다.
뉴스레터 전송 설정:
이제 프로젝트가 설정되었으므로 뉴스레터를 보내는 셀러리 작업을 만들 수 있습니다.
셀러리 구성
settings.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
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 reference
core
인 django 앱을 만듭니다.$ python manage.py startapp core
core
를 추가합니다.INSTALLED_APPS = [
...
'core',
]
tasks.py
앱 디렉토리에 core
파일을 만듭니다. 이 코드를 파일에 붙여넣습니다.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-newsletter
로 전화를 걸 수 있습니다.셀러리 작업에서.
이제 django 관리 페이지에서 뉴스레터를 보낼 수 있습니다.
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='*'),
}
}
** 이것은 매시간 뉴스레터 전송을 예약합니다.
이제 이 예약 작업을 사용하여 예약된 뉴스레터를 모든 구독자에게 자동으로 보낼 수 있습니다.
admin.py
앱 디렉토리의 core
파일에 추가합니다.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
비디오 데모:
더:
github에서
django-newsfeed
에 대한 모든 구성에 대해 자세히 알아볼 수 있습니다.여기에서 패키지를 확인하세요: django-newsfeed
결론:
이 패키지를 사용하는 경우 언제든지 의견을 보내주십시오.
또는 댓글 섹션에서.
제안 사항이 있거나 이 패키지에 기여하고 싶은 경우
issue을 생성하십시오.
contribution guide 을 읽습니다.
피드백과 기여는 언제나 환영합니다.
Reference
이 문제에 관하여(Django를 사용하여 뉴스 큐레이터 및 뉴스 구독 앱 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/saadmk11/create-a-news-curator-and-news-subscription-app-using-django-1ghj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)