随心一记

一二三四五,上山打老鼠


  • 首页

  • 归档

  • 标签
ywcsb

ywcsb

游戏可以不玩,小说不能不看。

153 日志
3 分类
42 标签
RSS
GitHub 知乎 随心一记
Links
  • 随心一记
  • 追梦人物的
  • MSDN

Django2.0添加站点地图sitemap

发表于 2019-03-30 | 阅读 833 | 分类于 Python |

概述

站点地图是您网站上的一个XML文件,它告诉搜索引擎索引器您的网页更改频率以及某些网页与您网站上其他网页相关的“重要”程度。此信息有助于搜索引擎索引您的网站。 Django站点地图框架允许您在Python代码中表达此信息,从而自动创建此XML文件。 它的工作方式与Django的联合框架非常相似。要创建站点地图,只需编写一个 Sitemap类并在URLconf中指向它 。

安装

要安装站点地图应用,请按以下步骤操作: 1. 添加django.contrib.sitemaps到您的INSTALLED_APPS 设置。 2. 确保您的TEMPLATES设置包含DjangoTemplates其APP_DIRS选项设置为的后端True。它默认存在,所以如果你改变了那个设置,你只需要改变它。 3. 确保你已经安装了 。sites framework

注意:站点地图应用程序不安装任何数据库表。它需要进入的唯一原因INSTALLED_APPS是 Loader()模板加载器可以找到默认模板。

示例

sitemaps.py

from django.contrib.sitemaps import Sitemap
from myblog.models import Blog, Tag, Category
from django.urls import reverse


class NewsSitemap(Sitemap):
    changefreq = 'daily'  # 可选,指定每个对象的更新频率
    priority = 0.6  # 可选,指定每个对象的优先级,默认0.5

    def items(self):  # 返回对象的列表.这些对象将被其他方法或属性调用
        return Blog.objects.all()

    def lastmod(self, obj):  # 可选,该方法返回一个datetime,表示每个对象的最后修改时间
        return obj.modify_time

    def location(self, obj):  # 可选.返回每个对象的绝对路径.如果对象有get_absolute_url()方法,可以省略location
        return reverse('blog_id', kwargs={'blog_id': obj.id})


class TagNameSitemap(Sitemap):
    changefreq = 'daily'  # 可选,指定每个对象的更新频率
    priority = 0.6  # 可选,指定每个对象的优先级,默认0.5

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

    def location(self, obj):
        return reverse('tag_name', kwargs={'tag_name': obj.name})


class CategoryNameSitemap(Sitemap):
    changefreq = 'daily'  # 可选,指定每个对象的更新频率
    priority = 0.6  # 可选,指定每个对象的优先级,默认0.5

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

    def location(self, obj):
        return reverse('category_name', kwargs={'category_name': obj.name})

url.py

from django.contrib.sitemaps import sitemap    # 导入sitemap视图
from myblog.sitemaps import NewsSitemap, TagNameSitemap, CategoryNameSitemap
from django.contrib.sitemaps import views as sitemaps_views
from django.views.decorators.cache import cache_page

sitemaps = {
    'new': NewsSitemap,
    'tags': TagNameSitemap,
    'categorys': CategoryNameSitemap
}
urlpatterns = [
        ···
        # 创建引用单个站点地图文件的站点地图索引,每个站点在您的sitemaps词典中定义一个
        # 这将自动生成一个sitemap.xml引用两者sitemap-new.xml、sitemap-tags.xml和sitemap-categorys.xml文件。本 Sitemap类和sitemaps 字典都没有改变。
    path('sitemap.xml',
         cache_page(86400)(sitemaps_views.index), # 分页显示
         {'sitemaps': sitemaps, 'sitemap_url_name': 'sitemaps'}),
    path('sitemap-<section>.xml',
         cache_page(86400)(sitemaps_views.sitemap),
         {'sitemaps': sitemaps}, name='sitemaps'),
]

当客户端访问 /sitemap.xml时,这将告诉Django生成一个Sitemap. sitemap视图需要一个额外的必需参数:{sitemaps: sitemaps}.sitemaps是一个字典,将小节的标签(例如:new或blog)映射到Sitemap类(例如:NewsSitemap).它也可以映射到Sitemap类的实例(例如: NewsSitemap(some_var)).

觉得不错,支持一下!
geerniya WeChat Pay

微信打赏

geerniya Alipay

支付宝打赏

# Python # Google # http # Django
Django redis模板片段缓存
Django2.0 xadmin重写save_model方法

发表评论

共 0 条评论

    暂无评论
© 2018 - 2022 ywcsb
冀ICP备17022045号-1
Supported by 腾讯云