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 相关文章推荐
python构造icmp echo请求和实现网络探测器功能代码分享
Jan 10 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
Apr 08 Python
python select.select模块通信全过程解析
Sep 20 Python
Python实现KNN邻近算法
Jan 28 Python
django写用户登录判定并跳转制定页面的实例
Aug 21 Python
Python ORM编程基础示例
Feb 02 Python
使用Python+selenium实现第一个自动化测试脚本
Mar 17 Python
Python正则表达式如何匹配中文
May 27 Python
keras打印loss对权重的导数方式
Jun 10 Python
教你如何使用Python实现二叉树结构及三种遍历
Jun 18 Python
ubuntu安装jupyter并设置远程访问的实现
Mar 31 Python
使用python生成大量数据写入es数据库并查询操作(2)
Sep 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创建动态图像
2006/10/09 PHP
PHP与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
2011/05/18 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
JS将表单导出成EXCEL的实例代码
2013/11/11 Javascript
jquery中$.post()方法的简单实例
2014/02/04 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
vue获取验证码倒计时组件
2019/08/26 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
python实现保存网页到本地示例
2014/03/16 Python
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
Python基于回溯法子集树模板解决全排列问题示例
2017/09/07 Python
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
2018/07/18 Python
把pandas转换int型为str型的方法
2019/01/29 Python
python分布式编程实现过程解析
2019/11/08 Python
pytorch之Resize()函数具体使用详解
2020/02/27 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
英国顶级足球鞋的领先零售商:Lovell Soccer
2019/08/27 全球购物
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/01/13 面试题
英文自荐信
2013/12/15 职场文书
平面设计专业求职信
2014/08/09 职场文书
出国签证在职证明范本
2014/11/24 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
导游词之台湾阿里山
2019/10/23 职场文书
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android
Redis实现短信验证码登录的示例代码
2022/06/14 Redis