My Image

Django 포스팅

[Django] 장고 패키지 설치로 초간단하게 RSS 피드 등록하기

Doyeon0430 | 2023년 06월 21일

Django 이미지

이번시간에는 Django에서 제공하는 django.contrib.syndication 패키지로 홈페이지 RSS 피드를 생성해보겠습니다.

RSS 피드는 자신의 홈페이지에 올라는 최신글을 요약해주는 장치로 구독자들에게 보다 편리한 맞춤형 콘텐츠를 제공하는 피드 형식입니다.

사이트맵이랑 다른 부분이 있지만 검색엔진에는 Sitemap과 RSS를 동시에 등록할 수 있습니다.

주소 : Django 사이트맵 등록 방법

 

  1. RSS 피드 설치 - settings.py

  2. RSS 피드 설치 - urls.py

  3. RSS 피드 설치 - models.py

  4. RSS 피드 설치 - feeds.py

  5. RSS 피드 결과화면

 

 

1. RSS 피드 설치 - settings.py

1. 경로 위치

myproject/
    manage.py
    myproject/
        settings.py
        urls.py
    myapp/
        models.py
        views.py
    ...

Django 프로젝트 최상위 디렉토리 settings.py로 들어가면 됩니다.

 

2. settings.py

INSTALLED_APPS = [
    'django.contrib.syndication',  #추가하기
]

INSTALLED_APPS에 위에 다음과 같이 입력하세요.

이렇게 RSS 피드 패키지를 설치했습니다.

사이트맵 패키지 설치와 비슷합니다.

 

 

2. RSS 피드 설치 - urls.py

1. 경로 위치

myproject/
    manage.py
    myproject/
        settings.py
        urls.py
    myapp/
        models.py
        views.py
    ...

Django 프로젝트 최상위 디렉토리로 urls.py로 들어가면 됩니다.

 

2. urls.py

from mywork.feeds import MyworkFeed
from movie.feeds import MovieFeed
from engineer.feeds import PhysicsFeed, DjangoFeed, NetworkFeed

urlpatterns = [
    #rss
    path('mywork/feed/', MyworkFeed(), name='mywork_feeds'),
    path('movie/feed/', MovieFeed(), name='movie_feeds'),
    path('engineer/physics/feed/', PhysicsFeed(), name='physics_feeds'),
    path('engineer/django/feed/', DjangoFeed(), name='django_feeds'),
    path('engineer/network/feed/', NetworkFeed(), name='network_feeds'),
]

각 모델에 RSS를 설치할 예정이므로 클래스 이름을 구분하기 쉽게 '모델이름Feed' 이런식으로 지어주세요.

혹시나 사이트맵에는 url을 한개만 사용했는데 RSS는 여러번 사용되는지 궁금할 수 있습니다.

RSS는 네이버에서 1개만 등록가능하며 구글에서는 개수 제한이 없습니다.

 

 

3. RSS 피드 설치 - models.py

1. 경로 위치

myproject/
    manage.py
    myproject/
        settings.py
        urls.py
    myapp/
        models.py
        views.py
    ...

Django 프로젝트에 url을 입력시킬 myapp 디렉토리로 models.py에 들어가면 됩니다.

 

2. models.py

from django.db import models

class Movie(models.Model):

    def get_absolute_url(self):
        return f'/movie/{self.pk}/'

사용하는 모델의 다음과 같은 코드를 추가해주세요.

get_absolute_url는 객체의 페이지 URL을 쉽게 생성하도록 만들어주는 메서드입니다.

그리고 값을 반환해야 하기 때문에 모델 객체 pk를 사용하고 feeds.py로 호출시켜줍니다.

 

 

4. RSS 피드 설치 - feeds.py

1. 경로 위치

myproject/
    manage.py
    myproject/
        settings.py
        urls.py
    myapp/
        models.py
        views.py
        feeds.py
    ...

Django 프로젝트에 url을 입력시킬 myapp 디렉토리로 feeds.py를 추가해주세요.

 

2. feeds.py

from django.contrib.syndication.views import Feed
from .models import Movie

class MovieFeed(Feed):
    title = 'doyeon0430 Movie rss'
    link = '/movie/feed/'
    description = 'Latest works from Movie'

    def items(self):
        return Movie.objects.all().order_by('-create_date')[:10]

    def item_title(self, item):
        return item.subject

    def item_description(self, item):
        return item.htmlcontent

    def item_link(self, item):
        return item.get_absolute_url()

title, link, description은 피드의 제목, 링크, 설명을 나타냅니다.

items(self)는 작품들을 가져오기 위한 로직을 등록하기 때문에 최신날짜 10개만 가져오도록 설정했습니다.

item_title(self, item)은 글의 제목을 가져옵니다.

item_description(self, item)는 글의 내용을 가져옵니다.

item_link(self, item)는 링크를 가져옵니다.

 

 

5. RSS 피드 결과화면

이제 모든 준비는 다 끝났습니다.

feeds.py에서 설정한 url 링크로 들어갔을 때 아래와 같이 나온다면 성공적으로 설치 된 겁니다. 

 

1. RSS 피드 등록 이미지

RSS 피드 등록 이미지

저는 구글과 네이버에 등록했는데 네이버는 아쉽게도 1개만 등록됩니다.

그래도 RSS를 등록하면 웹 크롤링과 정보수집에 도움된다고 합니다

 

2. RSS 피드 구글 등록

RSS 피드 구글 이미지

 

3. RSS 피드 네이버 등록

RSS 피드 네이버 이미지

구글 서치 콘솔을 보니 최신순 10개만 설정했는데 제대로 입력된 걸 확인할 수 있습니다.

글을 마치며 디장고에서 제공하는 RSS 피드 형식 패키지를 가져와 설치하는 방법을 알아봤습니다.

추가적으로 feed를 자신의 모델에 맞게 설정하는 방법까지 소개하며 직접 웹마스터도구에 등록을 해봤습니다.

긴 글 읽어주셔서 감사합니다.

댓글 (0)

    댓글이 없습니다.

간편 댓글 작성

My Image My Image My Image My Image