网站地图是一个网站里所有链接的集合,搜索引擎可以根据网站地图很轻松的抓取你sitemap里面记录的网址,所以把网站地图提交给搜索引擎,让其录入你的内容,是提高自己网站流量很重要的一个手段,尤其是对于新建网站,网站地图是SEO必要的手段,下面就简单介绍下Django项目如何快速生成网站地图sitemap
1. 安装sitemap
sitemap是一个app,所以要使用它,需要先安装这个app,在项目的setting.py文件的INSTALLED_APPS里,增加如下:
代码语言:javascript复制'django.contrib.sitemaps',
2. 实现sitemap生成文件
在项目app下新建sitemaps.py文件,比如要实现博客文章的链接放进sitemap里面,在blog app下新建sitemap.py文件,定义ArticleSitemap类,继承Django的类Sitemap,如下:
代码语言:javascript复制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它
代码语言:javascript复制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,所以需要导入。
代码语言:javascript复制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
3. 使sitemap生效
在项目的url.py里面,加入sitemap.py里面实现的类,如下:如果还有其他实现的类,加在sitemaps字典里就可以了。
代码语言:javascript复制from blog.sitemaps import ArticleSitemap
sitemaps = {
'articles': ArticleSitemap
}
在urlpatterns里面加入url,如下:
代码语言:javascript复制url(r'^sitemap.xml$', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
这里用到了sitemap,所以需要import这个模块
代码语言:javascript复制from django.contrib.sitemaps.views import sitemap
4. 前端html页面设置
在网站底部,根据页面排版增加sitemap的超链接,如下
代码语言:javascript复制<a href="/sitemap.xml" title="Sitemap" target="_blank">网站地图</a>
5. 查看效果
如果这些都配置好了,那么就可以在浏览器里输入 网站地址/sitemap.xml查看,也可以直接点网站底部的网站地图,会自动跳转到网站地址/sitemap.xml,比如我的网站地图在 http://www.0a0z.cn/sitemap.xml,可以看下网站地图的格式。