使用Django来製作sitemap

前言
sitemap虽然对SEO来说,不一定有加分的效果。但是sitemap还是能帮助搜寻引擎对你的网站进行索引
Django就自带了相关的套件来帮助快速製作sitemap,使用该套件可以自动处理分页问题,也不用另外在写方法去跟资料库交互,真的很方便

配置

需要配置'django.contrib.sitemaps'到settings.py中的INSTALLED_APPS中
套用这个配置不会额外安装任何资料表,只是为了要让Loader()能找到初始模板需要确保在settings.py中Temaplates配置的APP_DIRS为True有的网站还有提到需要添加django.contrib.sites等配置,除非同一个专案下有不同domain要调控或是其他因素才要设置,我自己是没用到,我理解错误的话可以在下方纠正我~

步骤

在跟settings.py同级的目录下新建sitemap.py档

在sitemap.py引入django.contrib.sitemaps.Sitemap以及你要用的model

在sitemap.py档中建立Sitemap的子类
http://img2.58codes.com/2024/201618666e4XJwPrHI.png
其中属性的chagefreq跟priority去看参考资料里面给的文档,另外如果网站是https要加上protocol

该类的方法只有items是一定要的,lastmod跟location不是必须,其他还有很多不同的方法可以去看官方文档
以下稍微说一下我使用的三个方法:
items
是必须的,将你要筛选的资料选出来,返回对象的sequence或QuerySet方法

loaction
可选项,返回对象的绝对路径,所以如果对象本身没有get_absolute_url()会报错

lastmod
可选项,返回datetime,可以自己设定或是对象的datetime属性

最后在底下写下字典sitemaps,方便urls.py去调用特定的类http://img2.58codes.com/2024/201618660alZrQ4Fbe.png

接着去urls.py中设定好url
http://img2.58codes.com/2024/20161866kK04O7hEGh.png

就可以在sitemap.xml路径下看到xml了
http://img2.58codes.com/2024/20161866nKTt1bqNki.png

但是当今天需要为每个sitemap设置sitemap index时,我们就需要修改一下方法。至于sitemap index也就是将为每一个sitemap去製作索引,让浏览器知道要去看这个站点的所有sitemap应该怎么走

先在urls.py中引入django.contrib.sitemaps.views中的index方法
from django.contrib.sitemaps.views import index接着修改路由配置
http://img2.58codes.com/2024/201618669xUrDQBK8g.png

接着我们就可以看到结果啦~
首先去sitemap.xml
http://img2.58codes.com/2024/20161866r0bZOSjp2P.png

接着去sitemap-brand.xml
http://img2.58codes.com/2024/20161866ofYxSBNhFT.png

可以看到结果就如同预期一样~

参考
官方文档:https://docs.djangoproject.com/zh-hans/3.2/ref/contrib/sitemaps/
sitemap格式文档:https://www.sitemaps.org/protocol.html


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章