配置站点sitemap.xml文件


配置站点sitemap.xml文件

💡前情提要

配置网站的sitemap.xml文件
在后面提交推送 获取文章链接
Django有一个高级的Sitemap生成框架
一个Sitemap是一个你的网站的XML文件,它告诉搜索引擎索索引你的页面的更新频率和你的站点某些页面联系到其它页面
有多"重要",这个信息帮助搜索引擎索引你的站点
Django的sitemap框架通过让你用Python代码表达这个信息来自动生成这个XML文件,为了创建一个sitemap,你只需写
一个Sitemap类并在你的URL配置里指向它

关于Sitemaps

柒仔站点

配置sitemap到APPS里面

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sitemaps',  # 站点 sitemap
    '....'
]

配置路由指向

💡项目目录下的urls.py

from django.urls import path, include
from blog.sitemaps import ArticleSitemap
from django.contrib.sitemaps.views import sitemap

# 网站地图
sitemaps = {
    'articles': ArticleSitemap,
}

urlpatterns = [
    path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
]

编写sitemap类

💡在子应用中编写sitemap.py文件

from django.contrib.sitemaps import Sitemap

from .models import Article
from .utils import site_protocol


class MySitemap(Sitemap):
    protocol = site_protocol()


class ArticleSitemap(MySitemap):
    changefreq = 'weekly'
    priority = 1.0

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

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

💡注意models.py文件

class Article(models.Model):
    '''文章'''
    '''
    文章字段
    '''

    class Meta:
        verbose_name = '文章'
        verbose_name_plural = verbose_name
        ordering = ('-add_time',)  # 以创建时间倒序排列

    def get_absolute_url(self):
        """
        %s 文章id 看页面是根据什么跳转
        """
        return '/article/%s/' % self.id

前端页面添加a标签跳转

<a href="{% url 'django.contrib.sitemaps.views.sitemap' %}" target="_blank">Sitemap</a>

获取站点url

💡

from lxml import etree
import requests

xmlDict = []

r = requests.get("https://qizai.bree.vip/sitemap.xml")
root = etree.fromstring(r.content)
for sitemap in root:
    children = sitemap.getchildren()
    xmlDict.extend([children[0].text])

for i in xmlDict:
    with open('qizai.txt', 'a+') as f:
        f.write(i + '\n')

文章作者: 柒仔
文章链接: /article/27/
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 XiaoLiu!
侵权声明: 若无意对您的文章造成侵权,请您留言,博主看到后会及时处理,谢谢。
评论-----昵称和邮箱必填,网址选填
  目录