登录        注册
  人生苦短,必用Python

Django如何使用sitemap实现网站地图

Django KenZhang 397浏览 0评论

网站地图是一个网站里所有链接的集合,搜索引擎可以根据网站地图很轻松的抓取你sitemap里面记录的网址,所以把网站地图提交给搜索引擎,让其录入你的内容,是提高自己网站流量很重要的一个手段,尤其是对于新建网站,网站地图是SEO必要的手段,下面就简单介绍下Django项目如何快速生成网站地图sitemap

1. 安装sitemap

sitemap是一个app,所以要使用它,需要先安装这个app,在项目的setting.py文件的INSTALLED_APPS里,增加如下:

'django.contrib.sitemaps',

2. 实现sitemap生成文件

在项目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

3. 使sitemap生效

在项目的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

4. 前端html页面设置

在网站底部,根据页面排版增加sitemap的超链接,如下

<a href="/sitemap.xml" title="Sitemap" target="_blank">网站地图</a>

5. 查看效果

如果这些都配置好了,那么就可以在浏览器里输入 网站地址/sitemap.xml查看,也可以直接点网站底部的网站地图,会自动跳转到网站地址/sitemap.xml,比如我的网站地图在 http://www.0a0z.cn/sitemap.xml,可以看下网站地图的格式。

转载请注明: KenZhang » Django如何使用sitemap实现网站地图

喜欢 (101) or 分享 ( 0)

联系我请直接在公众号留言~

扫码或搜索:大江大河定

大江大河定

微信公众号 扫一扫关注

想结交更多的朋友吗?

来PyDjango瞧瞧吧

PyDjango

QQ群号 88133982 立即加入

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击下面的