View All Posts. MiCHiLU.com powered by Django ;-)

[Django]: models を使わないで sitemap.xml を生成する

models に入っていない Index ページを sitemap.xml に組み込む方法。 前から肝心のトップページが sitemap.xml に入っていなかったのが気になっていたので、入れてみました。 IndexSitemap クラスを作成し get_urls メソッドで sitemap.xml の種になる dict を list で返す ようにします。

michilu.urls

from django.conf.urls.defaults import *
from michilu.sitemaps import sitemaps

urlpatterns = patterns("",)

urlpatterns += patterns('',
    (r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap',{'sitemaps': sitemaps}),
)

michilu.sitemaps

from django.contrib.sitemaps import GenericSitemap
from michilu.blog.models import Entry
from datetime import datetime

info_dict = {
    "queryset": Entry.objects.all(),
    "date_field": "last_mod",
}

class IndexSitemap(object):
    def get_urls(self):
        return [{
            'location':     "http://michilu.com/",
            'lastmod':      datetime.now(),
            'changefreq':   "hourly",
            'priority':     0.7 ,
        }]

sitemaps = {
    "blog": GenericSitemap(info_dict, priority=0.6),
    "index": IndexSitemap(),
}

http://michilu.com/sitemap.xml

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>http://michilu.com/blog/posts/1/</loc><lastmod>2007-01-17</lastmod><priority>0.6</priority></url>
...
<url><loc>http://michilu.com/</loc><lastmod>2007-04-25</lastmod><changefreq>hourly</changefreq><priority>0.7</priority></url>
</urlset>
Wed, 25 Apr 2007 01:32:45 +0900 source edit
Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.1 Japan License.
View All Posts. MiCHiLU.com powered by Django ;-)