Django添加sitemap的方法示例


Posted in Python onAugust 06, 2018

sitemap是 Google 最先引入的网站地图协议,采用 XML 格式,它的作用简而言之就是优化搜索引擎的索引效率,详细的解释可以参考百度百科 。

下面介绍下如何为Django站点添加sitemap功能。

1、启用sitemap

在django的settings.py的INSTALLED_APPS中添加

'django.contrib.sites',
'django.contrib.sitemaps',

然后migrate数据库:

$ ./manage.py makemigrations
$ ./manage.py migrate

登陆Django后台,修改SITE为你Django网站的域名和名称,然后在settings.py中加入SITE_ID = 1来制定当前的站点。

2、添加sitemap功能

(1)创建sitemap

创建sitemap.py.内容类似下面的代码:

from django.contrib.sitemaps import Sitemap
from blog.models import Article, Category, Tag
from accounts.models import BlogUser
from django.contrib.sitemaps import GenericSitemap
from django.core.urlresolvers import reverse

class StaticViewSitemap(Sitemap):
 priority = 0.5
 changefreq = 'daily'

 def items(self):
  return ['blog:index', ]

 def location(self, item):
  return reverse(item)


class ArticleSiteMap(Sitemap):
 changefreq = "monthly"
 priority = "0.6"

 def items(self):
  return Article.objects.filter(status='p')

 def lastmod(self, obj):
  return obj.last_mod_time


class CategorySiteMap(Sitemap):
 changefreq = "Weekly"
 priority = "0.6"

 def items(self):
  return Category.objects.all()

 def lastmod(self, obj):
  return obj.last_mod_time


class TagSiteMap(Sitemap):
 changefreq = "Weekly"
 priority = "0.3"

 def items(self):
  return Tag.objects.all()

 def lastmod(self, obj):
  return obj.last_mod_time


class UserSiteMap(Sitemap):
 changefreq = "Weekly"
 priority = "0.3"

 def items(self):
  return BlogUser.objects.all()

 def lastmod(self, obj):
  return obj.date_joined

(2)url配置

url.py中加入:

from DjangoBlog.sitemap import StaticViewSitemap, ArticleSiteMap, CategorySiteMap, TagSiteMap, UserSiteMap

sitemaps = {

 'blog': ArticleSiteMap,
 'Category': CategorySiteMap,
 'Tag': TagSiteMap,
 'User': UserSiteMap,
 'static': StaticViewSitemap
}

url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
  name='django.contrib.sitemaps.views.sitemap'),

至此,全部完成,运行你的django程序,浏览器输入:http://127.0.0.1:8000/sitemap.xml

就可以看见已经成功生成了,然后就可以提交这个地址给搜索引擎。 我的网站的sitemap的地址是:https://www.fkomm.cn/sitemap.xml

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3中的2to3转换工具使用示例
Jun 12 Python
Python脚本暴力破解栅栏密码
Oct 19 Python
Python字符串处理实例详解
May 18 Python
python实现发送邮件及附件功能
Mar 02 Python
python 判断是否为正小数和正整数的实例
Jul 23 Python
Pytorch卷积层手动初始化权值的实例
Aug 17 Python
python多进程重复加载的解决方式
Dec 13 Python
新手常见Python错误及异常解决处理方案
Jun 18 Python
Django --Xadmin 判断登录者身份实例
Jul 03 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
Dec 27 Python
关于python中readlines函数的参数hint的相关知识总结
Jun 24 Python
pandas进行数据输入和输出的方法详解
Mar 23 Python
python中scikit-learn机器代码实例
Aug 05 #Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
Aug 05 #Python
Python字符串、整数、和浮点型数相互转换实例
Aug 04 #Python
python与caffe改变通道顺序的方法
Aug 04 #Python
Python爬虫PyQuery库基本用法入门教程
Aug 04 #Python
python list转矩阵的实例讲解
Aug 04 #Python
Python 生成 -1~1 之间的随机数矩阵方法
Aug 04 #Python
You might like
php写的带缓存数据功能的mysqli类
2012/09/06 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
PHP使用NuSOAP调用Web服务的方法
2015/07/18 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
php定期拉取数据对比方法实例
2019/09/22 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
jquery下json数组的操作实现代码
2010/08/09 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
Js 获取Gridview选中行的内容操作步骤
2013/02/05 Javascript
js日期联动示例
2014/05/02 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
Vue中实现权限控制的方法示例
2019/06/07 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
详解Tensorflow数据读取有三种方式(next_batch)
2018/02/01 Python
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
Python3对称加密算法AES、DES3实例详解
2018/12/06 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
animation和transition的区别
2020/10/12 HTML / CSS
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
会议主持人开场白台词
2015/05/28 职场文书
2016党员党课心得体会
2016/01/07 职场文书
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL