46 장고 프레임워크 Sitemap 만들기

46.1 Django Sitemap 만들기 - base.py

Django 공식 참고 자료

빙, 구글, 네이버 등 사이트를 등록할때 필요한 사이트맵을 만들어 보자!!
base.py 설정 파일을 열어 sitemap 패키지를 추가한다.

1
2
3
4
5
6
#config/settings/base.py

SITE_ID = 1 

'django.contrib.sites',     
django.contrib.sitemaps',

46.2 Django Sitemap 만들기 - sitemaps.py

사이트맵을 만들기 위해 config.sitemaps.py 신규 파일을 생성했다.

PyBlog model을 import 하고
location을 오버라이드 해서 /blog/pk 가 되도록 경로 설정하였다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#config/sitemaps.py
from django.contrib.sitemaps import Sitemap
from myapp.blog.models import PyBlog

class PytonBlogSitemap(Sitemap):
    changefreq = 'weekly'
    priority = 0.7

    def items(self):
        results = PyBlog.objects.all().order_by('-regist_dt')       
        return results

    def location(self, obj):
        return """/blog/%s""" % obj.pk

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

46.3 Django Sitemap 만들기 - urls.py

urls.py 에 sitemap.xml path와
sitemaps ={} 부분은 config.sitemaps 안의 PythonBlogSitemap 클래스 이다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#config/urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.contrib.sitemaps.views import sitemap
from config.sitemaps import PytonBlogSitemap

sitemaps = {
    'blog':PytonBlogSitemap, 
}

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

    path('admin/', admin.site.urls),
    path("", include("myapp.blog.urls")),
]

if settings.DEBUG:
    if "debug_toolbar" in settings.INSTALLED_APPS:
        import debug_toolbar
        urlpatterns = [path("__debug__/", include(debug_toolbar.urls))] + urlpatterns

위 설정이 다 되었으면 아래 코드를 한번 실행하자.

1
2
python manage.py makemigrations
python manage.py migrate

46.4 브라우저에서 Django sitemap 확인하기 - example.com

사이트 맵은 잘 나오는데 도메인이 example.com으로 표시된다.

46.5 브라우저에서 Django sitemap 확인하기 -Sitesadmin 수정하기

admin 접속 후 example.com
내 도메인으로 변경하면 된다.