본문 바로가기
Programming

Django web application sitemap 생성 & 적용 방법

by 하하호호 2022. 1. 27.
반응형

 

how to create sitemap on web application?

 

SEO 기본 / 웹사이트 노출

포털사이트에 SITEMAP 등록이 필수다

 

구글 서치콘솔에 웹 애플리케이션을 등록하면,

주기적으로 트래픽 현황을 관리할 수 있다. 구글

서치콘솔에서 내 사이트를 방문해서 어떤 키워드로

유입이 되었고 몇명의 방문자가 카운팅 되었는지

무료로 서비스를 제공하고 있다.

 

 

구글 서치콘솔에 웹애플리케이션의 URL 소유를

인증하고 나서 가장 먼저 해야 하는 것이 sitemap

등록이다. 웹 애플리케이션이 단순히 1개의 페이지만

있다면 모르겠지만, 통상 여러개의 URL주소를 가지고

있기 때문에 하부 URL들을 모두 등록해줘야 정확한

집계가 가능하기 때문이다.

 

Django Framework에서는 sitemap을 생성하고 

path로 연결하는 기능을 기본 제공하고 있다. 

마지막으로 데이터베이스에 sites를 마이그레이션하면

모든 과정이 종료된다.

 

 

 

stiemap 생성

 

1. settings.py 추가 INSTALLED_APPS 부분 추가

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
INSTALLED_APPS = [ 
'django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles',
 
'django.contrib.sites', # 추가 
'django.contrib.sitemaps', # 추가 
 
]
 
 
cs

 

위 소스가 추가되면 SITE_ID를 INSTALLED_APPS 바로 밑에

추가해준다. settings.py 파일 내 어떤 위치에 넣어줘도 무방하다.

 

1
2
 
SITE_ID = 1 # sitemap
cs

 

 

 

2. PROJECT 디렉토리 내에서 sitemaps.py을 생성해준다.

sitemap 생성에 핵심적인 부분이다.

Django에서 기본 제공하는 Sitemap 클래스를 상속받아서

새로운 클래스를 만들어준다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from django.urls import reverse
from django.contrib.sitemaps import Sitemap 
 
class StaticViewSitemap(Sitemap): 
    priority = 0.5 
    changefreq = 'weekly' 
    
    def items(self): 
        return [
            'index',
            'example1',
            'example2',
            'example3',
        ] 
        
    def location(self, item): 
        return reverse(item)
cs

 

 

 

 

Django Sitemap Documentation

 

The sitemap framework | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

 

위에 Django 문서에 보면 다양한 옵션이 있다.

필수적인 옵션만 넣어도 stiemap은 생성이 된다.

 

priority는 클래스의 우선순위를 의미한다.

0~1 사이 값을 가지게 되고, 사이트맵이 여러개일

경우 사이트 클로러에게 제공할 우선순위를 의미한다.

기본값은 0.5로 설정되어 있다.

 

changfreq는 검색엔진에 sitemap의 내용변동 주기를

의미한다. daily, weekly, never, always등의 옵션이 

있다. 변동하는게 크게 의미는 없다.

 

 

items 함수가 리턴하는 값은 app의 urls.py에서 설정한

url-namespace 값을 입력해준다. sitemap에 제공할 

url의 이름값들을 넣어주면 sitemaps.py가 완성된다.

 

 

3. urls.py 수정하기

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#project/urls.py
 
from .sitemaps import *
from django.contrib.sitemaps.views import sitemap
 
 
sitemaps = { 'static':StaticViewSitemap, }
 
 
urlpatterns = [
 ... 
 sitemap path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='sitemap'), 
 ... 
 
]
 
 
cs

 

PROJECT 디렉토리 내에서 urls.py에 위 코드를 추가

해준다. 

 

stiemaps 딕셔너리 데이터를 추가해주고,

url에 sitemap.xml에 접속했을 때 연결해줄

path을 추가해준다.

 

4. migrate sites

이제 sitemap 생성 및 추가도 완료되었고, PROJECT setting도

완료되었다. 마지막으로  데이터베이스에 site 를 추가해주면

django_site 항목이 추가된다.

 

1
2
./manage.py migrate sites
./manage.py migrate
cs

 

만약 데이터베이스에 site를 추가해주지 않고, 서버에 접속하면

아래 에러가 발생한다. 이 에러가 발생한다는 것은 데이터베이스에

Django가 참조할 sties가 존재하지 않는다는 것이다.

 

relation "django_site" does not exist

 

 

5. sitemap.xml 확인

서버 URL/sitemap.xml로 접속하면 정상적으로 XML페[이지가

렌더링된다. 자세히 보면 서버 URL이 www.example.com으로  

되어 있다. 

 

Django admin 으로 접속해서 SITE 항목을 서버 도메인 주소로

수정해주면 모든 과정이 끝이 난다.

 

이제 구글/빙/네이버/다음 등등 포털 사이트에서 웹 사이트를 노출

시킬 sitemap 준비가 완료되었다.

반응형

댓글