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中heapq模块的用法
Jun 28 Python
Python中Selenium模拟JQuery滑动解锁实例
Jul 26 Python
numpy添加新的维度:newaxis的方法
Aug 02 Python
Python 支付整合开发包的实现
Jan 23 Python
python实现二级登陆菜单及安装过程
Jun 21 Python
Django 模型类(models.py)的定义详解
Jul 19 Python
基于Django统计博客文章阅读量
Oct 29 Python
python/Matplotlib绘制复变函数图像教程
Nov 21 Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 Python
Python可以用来做什么
Nov 23 Python
Python使用tkinter实现小时钟效果
Feb 22 Python
Python超详细分步解析随机漫步
Mar 17 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
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
PHP和.net中des加解密的实现方法
2013/02/27 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
php实现文件下载实例分享
2014/06/02 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
JavaScript 序列化对象实现代码
2009/12/18 Javascript
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
javascript实现焦点滚动图效果 具体方法
2013/06/24 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
vue中的自定义分页插件组件的示例
2018/08/18 Javascript
Vue实现一个无限加载列表功能
2018/11/13 Javascript
[01:32]DOTA2上海特锦赛现场采访:最想COS的英雄
2016/03/25 DOTA
Python字符转换
2008/09/06 Python
Python写的一个简单DNS服务器实例
2014/06/04 Python
Python Socket编程详细介绍
2017/03/23 Python
python生成ppt的方法
2018/06/07 Python
python3实现网络爬虫之BeautifulSoup使用详解
2018/12/19 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
2019/11/26 Python
django框架中间件原理与用法详解
2019/12/10 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
浅析python标准库中的glob
2020/03/13 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
七夕情人节促销方案
2014/06/07 职场文书
2014年干部作风建设总结
2014/10/23 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python