網站地圖是一個網站裡所有鏈接的集合,搜索引擎可以根據網站地圖很輕松的抓取你sitemap裡面記錄的網址,所以把網站地圖提交給搜索引擎,讓其錄入你的內容,是提高自己網站流量很重要的一個手段,尤其是對於新建網站,網站地圖是SEO必要的手段,下面就簡單介紹下Django項目如何快速生成網站地圖sitemap
1. 安裝sitemap
sitemap是一個app,所以要使用它,需要先安裝這個app,在項目的setting.py文件的INSTALLED_APPS裡,增加如下:
'django.contrib.sitemaps',
在項目app下新建sitemaps.py文件,比如要實現博客文章的鏈接放進sitemap裡面,在blog app下新建sitemap.py文件,定義ArticleSitemap類,繼承Django的類Sitemap,如下:
class ArticleSitemap(Sitemap):
changefreq = 'weekly'
priority = 1.0
def items(self):
return Article.objects.all()
def lastmod(self, obj):
if obj.update_date:
return obj.update_date
return obj.add_time
用到了Sitemap類,別忘了import它
from django.contrib.sitemaps import Sitemap
a. changefreq和priority對應sitemap.xml裡面的changefreq和priority。
b. item方法是返回你所有的文章object,locate()會對item返回的object去調用get_absolute_url方法,這個值會放在xml裡面loc的位置。
c. 所以,如果不去重寫locate方法,就需要你在對應的model裡面實現get_absolute_url方法,比如這裡是Article的model裡面需要實現get_absolute_url方法,這裡要注意的是參數要和url裡面配置的匹配。因為用到了reverse,所以需要導入。
from django.urls import reverse
def get_absolute_url(self):
return reverse('blog:article_detail', kwargs={'article_id': self.id})
d. lastmod同樣對應於xml裡面的lastmod
e. 這樣就完成了一個model的sitemap實現, 同樣的方法可以實現其他需要放進sitemap裡的model
在項目的url.py裡面,加入sitemap.py裡面實現的類,如下:如果還有其他實現的類,加在sitemaps字典裡就可以了。
from blog.sitemaps import ArticleSitemap
sitemaps = {
'articles': ArticleSitemap
}
在urlpatterns裡面加入url,如下:
url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
這裡用到了sitemap,所以需要import這個模塊
from django.contrib.sitemaps.views import sitemap
在網站底部,根據頁面排版增加sitemap的超鏈接,如下
<a href="/sitemap.xml" title="Sitemap" target="_blank">網站地圖</a>
如果這些都配置好了,那麼就可以在浏覽器裡輸入 網站地址/sitemap.xml查看,也可以直接點網站底部的網站地圖,會自動跳轉到網站地址/sitemap.xml,比如我的網站地圖在 http://www.0a0z.cn/sitemap.xml,可以看下網站地圖的格式。
List of articles background
Catalog Visualization package