win-j의 자유로운 블로그

개발일지 Django 사이트맵(Sitemap) 설정 하기 - 검색엔진 SEO 필수 기능!!

개발일지 · 2026.03.10 · 조회 4

개발일지 Django 사이트맵(Sitemap) 설정 하기 - 검색엔진 SEO 필수 기능!!

Django에서 지원하는 Sitemap 업을 사용해서 사이트맵을 추가했습니다. 



웹사이트를 운영하다 보면 검색엔진에 페이지가 잘 노출되도록 하는 것이 매우 중요합니다.

이를 위해서 사용하는 대표적인 기능이 바로 사이트맵(Sitemap) 입니다.



사이트맵은 웹사이트에 존재하는 페이지 목록을 XML 형식으로 정리한 파일이며, 검색엔진이 사이트 구조를 빠르게 이해하고 크롤링할 수 있도록 도와줍니다.



Django에서는 django.contrib.sitemaps 기능을 사용하면 사이트맵을 매우 쉽게 생성할 수 있습니다.


1. Django Sitemap 기능 활성화 

 먼저 Django에서 제공하는 사이트맵 기능을 활성화해야 합니다. 

 "settings.py" 파일에 앱 추가하기 

INSTALLED_APPS = [
    ...
    'django.contrib.sitemaps',
]


이 설정을 추가하면 Django에서 사이트맵 XML을 자동으로 생성하는 기능을 사용할 수 있습니다. 

2. Sitemap 클래스 생성

 사이트맵에 포함될 데이터를 정의하기 위해 Sitemap 클래스를 만들어야 합니다. 

 예를 들어 블로그 글(Post 모델)을 사이트맵에 포함시키는 경우 다음과 같이 작성합니다. 

sitemaps.py 생성! 

from django.contrib.sitemaps import Sitemap
from .models import Post

class PostSitemap(Sitemap):
    changefreq = "daily"
    priority = 0.8

    def items(self):
        return Post.objects.filter(status='published')

    def lastmod(self, obj):
        return obj.updated_at



"changefreq"  페이지 변경 빈도 : 설정으로는 always 페이지 항상 변경, hourly 매 시간 변경, daily 매일 변경, weekly 매주 변경, monthly 매월 변경, yearly 매년 변경, never 거의 변경되지 않음으로 설정 가능합니다. 



"priority" 검색엔진 중요도 : 설정으로는 0.0 ~ 1.0 까지 설정이 가능하고 0.0 중요하지 않음, 0.3 중요도가 낮음, 0.5 일반 페이지, 0.8 중요한 콘텐츠, 1.0 사이트에서 가장 중요한 페이지로 설정이 가능합니다. 



"items()" 사이트맵에 포함될 데이터

"lastmod" 마지막 수정 날짜



3. URL에 Sitemap 등록 

다음으로 urls.py에 사이트맵을 등록합니다. 

from django.contrib.sitemaps.views import sitemap
from sitemaps import PostSitemap

sitemaps = {
    'posts': PostSitemap,
}

urlpatterns = [
    path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='sitemap'),
]



이렇게 설정하면 다음 주소에서 사이트맵이 자동으로 생성됩니다. 

https://도메인주소/sitemap.xml




블로그 win-j.com의 3개의 글이 있고 win-j.com/sitemap.xml을 검색하면 블로그 글 목록이 표시되어집니다. 






네이버 서치어드바이저에 새롭게 만든 sitemap.xml을 추가했습니다. 



Django 사이트맵 사용 장점은 검색엔진 크롤링 효과 상승, 신규 글의 빠른 색인, SEO 개선, 사이트 구조 자동 관리로 블로그나 콘텐츠 사이트를 운영한다면 필수적으로 설정해야 하는 기능입니다. 

Sitemap.xml 기능까지 추가되었으니 글 작성이 많아지면 더욱 더 글이 노출이 될 가능성이 생길것 같습니다.