django网站地图sitemap

本文介绍了如何使用Django内置的Sitemap框架来创建XML格式的网站地图,以帮助搜索引擎更好地抓取网站内容。包括安装、初始化、Sitemap类的使用方法、范例以及静态视图的Sitemap处理。
摘要由CSDN通过智能技术生成

网站地图是根据网站的结构、框架、内容,生成的导航网页,是一个网站所有链接的容器。很多网站的连接层次比较深,蜘蛛很难抓取到,网站地图可以方便搜索引擎或者网络蜘蛛抓取网站页面,了解网站的架构,为网络蜘蛛指路,增加网站内容页面的收录概率。网站地图一般存放在域名根目录下并命名为sitemap,比如​​http://www.liujiangblog.com/sitemap.xml​​。

一个典型的sitemap,其内容片段如下:​ ​http://www.cungun.com​​

This XML file does not appear to have any style information associated with it. The document tree is shown below.


http://www.liujiangblog.com/blog/9/
2017-12-08
0.4


http://www.liujiangblog.com/blog/8/
2017-12-05
0.4


http://www.liujiangblog.com/blog/7/
2017-11-19
0.4

更多内容未列出

Django自带了一个高级的生成网站地图的框架,我们可以很容易地创建出XML格式的网站地图。创建网站地图,只需编写一个Sitemap类,并在URLconf中编写对应的访问路由。

一、安装
安装sitemap框架的步骤如下:

在INSTALLED_APPS设置中添加’django.contrib.sitemaps’ .
确认settings.py中的​​TEMPLATES​​设置包含​​DjangoTemplates​​后端,并将​​APP_DIRS​​选项设置为True。其实,默认配置就是这样的,只有当你曾经修改过这些设置,才需要调整过来。
确认你已经安装sites框架. (注意: 网站地图APP并不需要在数据库中建立任何数据库表。修改​​INSTALLED_APPS​​的唯一原因是,以便​​Loader()​​模板加载器可以找到默认模板。)
二、初始化
为了在网站上激活站点地图生成功能,请把以下代码添加到URLconf中:

from django.contrib.sitemaps.views import sitemap

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

当用户访问​​/sitemap.xml​​时,Django将生成并返回一个网站地图。

网站地图的文件名并不重要,重要的是文件的位置。搜索引擎只会索引网站的当前URL层级及下属层级。例如,如果​​sitemap.xml​​位于根目录中,它会引用网站中的任何URL。 但是如果站点地图位于​​/content/sitemap.xml​​,则它只能引用以​​/content/​​开头的网址。

sitemap视图需要一个额外的必需参数: ​​{‘sitemaps’: sitemaps}​​。​​sitemaps​​应是一个字典,将部门的标签(例如news或blog)映射到其 Sitemap类(例如,NewsSitemap或BlogSitemap)。也可以映射到Sitemap类的实例(例如,BlogSitemap(some_var))。

三、范例
假设你有一个博客系统,拥有Entry模型,并且你希望站点地图包含指向每篇博客文章的所有链接。 以下是Sitemap类的写法:

from django.contrib.sitemaps import Sitemap
from blog.models import Entry

class BlogSitemap(Sitemap):
changefreq = “never”
priority = 0.5

def items(self):
    return Entry.objects.filter(is_draft=False)

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

注意:

changefreq和priority分别对应于HTML页面中的​​​​和​​​​标签。
items()只是一个返回对象列表的方法。
lastmod方法应该返回一个datetime时间对象。
在此示例中没有编写location方法,但你可以自己增加此方法来指定对象的URL。默认情况下,location()在每个对象上调用​​get_absolute_url()​​并将返回结果作为对象的url。也就是说,使用站点地图的模型,比如Entry,需要在模型内部实现​​get_absolute_url()​​方法。
四、Sitemap类详解
class Sitemap[source]

Sitemap类可以定义以下方法/属性:

  1. items[source]
    必须定义。返回对象列表的方法。

框架不关心对象的类型,重要的是这些对象将被传递给location(),lastmod(),changefreq()和priority()方法。

  1. location[source]
    可选。 其值可以是一个方法或属性。

如果是一个方法, 它应该为items()返回的对象的绝对路径.

如果它是一个属性,它的值应该是一个字符串,表示items()返回的每个对象的绝对路径。

上面所说的“绝对路径”表示不包含协议和域名的URL。 例子:

正确:’/foo/bar/’
错误:‘example.com/foo/bar/’
错误:‘https://example.com/foo/bar/’

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

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

  1. lastmod
    可选。 一个方法或属性。表示当前条目最后的修改时间。

  2. changefreq
    可选。 一个方法或属性。表示当前条目修改的频率。

changefreq的允许值为:

‘always’
‘hourly’
‘daily’
‘weekly’
‘monthly’
‘yearly’
‘never’

  1. pr网站地图是根据网站的结构、框架、内容,生成的导航网页,是一个网站所有链接的容器。很多网站的连接层次比较深,蜘蛛很难抓取到,网站地图可以方便搜索引擎或者网络蜘蛛抓取网站页面,了解网站的架构,为网络蜘蛛指路,增加网站内容页面的收录概率。网站地图一般存放在域名根目录下并命名为sitemap,比如​​http://www.liujiangblog.com/sitemap.xml​​。
    一个典型的sitemap,其内容片段如下:

This XML file does not appear to have any style information associated with it. The document tree is shown below.


http://www.liujiangblog.com/blog/9/
2017-12-08
0.4


http://www.liujiangblog.com/blog/8/
2017-12-05
0.4


http://www.liujiangblog.com/blog/7/
2017-11-19
0.4

Django自带了一个高级的生成网站地图的框架,我们可以很容易地创建出XML格式的网站地图。创建网站地图,只需编写一个Sitemap类,并在URLconf中编写对应的访问路由。

一、安装
安装si

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值