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

原创文章,转载请注明出处:https://boywithacoin.cn/article/django-wang-zhan-di-tu-sitemap/