django 网站地图 sitemap

  • 网站地图是根据网站的结构、框架、内容,生成的导航网页,是一个网站所有链接的容器。

  • 网站地图可以方便搜索引擎或者网络蜘蛛抓取网站页面,增加网站内容页面的收录概率。

1、添加 sitemap 地图应用#

添加 django.contrib.sitemaps 到 installed_apps

2、定制地图成员#

添加 django -> blog -> sitemaps.py


# -*- coding: utf-8 -*-

from django.contrib.sitemaps import Sitemap

from .models import Article, Category

from django.db.models.aggregates import Count

# 文章聚类

class ArticleSitemap(Sitemap):

    changefreq = 'weekly'

    priority = 1.0

    def items(self):

        return Article.objects.all()

    def lastmod(self, obj):

        return obj.update_date

# 分类聚类

class CategorySitemap(Sitemap):

    changefreq = 'weekly'

    priority = 0.8

    def items(self):

        return Category.objects.annotate(total_num=Count('article')).filter(total_num__gt=0)

    def lastmod(self, obj):

        return obj.article_set.first().create_date

这里从 Sitemap 类继承一个类,实现 items 方法,该方法返回所有要加入 Sitemap 的数据,属性 changefreq、priority 和方法 location、lastmod 分别对应 Sitemap 标准 xml 文档中的相应字段。

changfreq:取值范围为:always、hourly、daily、weekly、monthly、yearly、never,可根据实际情况进行设置

priority:取值范围为 0.4-1.0,如果不设置则默认值为 0.5

location:用于定制地图项的 url。如果不实现该方法,则必须实现地图对应 model 的 get_absolute_url 方法,实现该方法后则会优先采用该方法返回的 url:

def location(self, obj):

return/tag/%s/% obj.name

要增加多个地图成员,继承多个 Sitemap,分别实现即可。

如果未提供 location,框架将调用 items () 返回的每个对象上的 get_absolute_url () 方法。

该属性最终反映到 HTML 页面上的标签。

3、配置路由

添加代码到 django_blog->django_blog->urls.py


#网站地图

from django.contrib.sitemaps.views import sitemap

from apps.blog.sitemaps import ArticleSitemap, CategorySitemap

#网站地图

sitemaps = {

    'articles': ArticleSitemap,

    'categories': CategorySitemap

}

urlpatterns = [

    path('admin/', admin.site.urls),

    path('mdeditor/', include('mdeditor.urls')),  # Django-mdeditor URLS

     # index

    path('', include('apps.blog.urls'), name='blog'),  

    #用户

    path('accounts/', include('apps.user.urls'), name='accounts'),

    #评论

    path('comment/', include('apps.comment.urls'), name = 'comment'),

    #工具

    path('md2html/', blog_views.md2html, name='markdown'),

    #网站地图

    path('sitemap.xml', sitemap, {'sitemaps':sitemaps}, name = 'django.contrib.sitemaps.views.sitemap'),

]

4、添加网站地图

在页脚添加如下代码即可

<a href="/sitemap.xml" title="Sitemap" target="_blank">Sitemap</a>

5、点击添加的 sitemap 就可以查看 sitemap 了

sitemap.xml 文件显示大致是这样的:sitemap

将网站添加到百度搜索引擎#

  • 登陆网站站长之家 https://ziyuan.baidu.com/

  • 首先我们需要在我们的 html 主页面中添加 meta 代码 <meta name="baidu-site-verification" content="PVrsG5G9a2" />

用来认证我们的网站

之后

  • 我们可以在提交链接中提交单个页面,或者讲 js 代码:

<script>

(function(){

    var bp = document.createElement('script');

    var curProtocol = window.location.protocol.split(':')[0];

    if (curProtocol === 'https') {

        bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';

    }

    else {

        bp.src = 'http://push.zhanzhang.baidu.com/push.js';

    }

    var s = document.getElementsByTagName("script")[0];

    s.parentNode.insertBefore(bp, s);

})();

</script>

这串代码会讲访问的 url 直接提交到站长之家中国。还是挺方便的吧。

  • 当让我们可以用 django_sitemap 生成的网站地图来提交到 sitemap.xml 界面,直接贴上 url 就可以。

django 博客提交到服务器后,sitemap.xml 域名显示的 localhost 或者 127.0.0.1 怎么办?#

在本地使用 sitemap 的时候我们在 /admin 中添加的站点信息是 127.0.0.1:0000 之后如果把数据库传到服务器的话这项数据是没有改的。

  • 可以在管理界面修改站点信息为自己的域名,比如我就把 127.0.0.1 改成了 boywithacoin.cn

  • 修改服务器 django_site 的表修改里面的信息为自己的域名就可以了

END 其他搜索引擎的地址也大致相同,各个搜索引擎提交链接的地址汇总添加的时候有遇到问题的欢迎留言哦

本作品采用《CC 协议》,转载必须注明作者和本文链接
文章!!首发于我的博客 Stray_Camel (^U^) ノ~YO