Django 网站地图(Sitemap)设置

图片[1]-Django 网站地图(Sitemap)设置-山海云端论坛

安装 Django Sitemap APP 的步骤:

  1. INSTALLED_APPS 设置中添加 'django.contrib.sitemaps'
  2. 确认 TEMPLATES 设置中包含 DjangoTemplates 后端,并将 APP_DIRS 选项设置为 True。如果未修改过这些设置,使用默认值即可。
  3. 确认已安装 sites framework。在 INSTALLED_APPS 中添加 'django.contrib.sites',并添加设置 SITE_ID=1。运行 migrate 完成设置。

示例子:

假设有一个 News 模型,并希望 Sitemap 包含指向所有新闻条目的链接

# sitemaps.py from django.contrib.sitemaps import Sitemap from myweb.models import News from django.urls import reverse class NewsSitemap(Sitemap): changefreq = 'daily' # 可选,指定每个对象的更新频率 priority = 0.6 # 可选,指定每个对象的优先级,默认0.5 def items(self): # 返回对象的列表.这些对象将被其他方法或属性调用 return News.objects.all() def lastmod(self, obj): # 可选,该方法返回一个datetime,表示每个对象的最后修改时间 return obj.pub_time def location(self, obj):#可选.返回每个对象的绝对路径.如果对象有get_absolute_url()方法,可以省略location return reverse('new', kwargs={'new_id': obj.id}) # url.py from django.contrib.sitemaps import sitemap # 导入sitemap视图 from xxx.sitemaps import NewsSitemap sitemaps = { 'new': NewsSitemap, } urlpatterns = [ ... url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'), ]

当客户端访问 /sitemap.xml 时,Django 将生成一个 Sitemap。

Sitemap 视图需要一个额外的必需参数: {'sitemaps': sitemaps}sitemaps 是一个字典,将小节的标签(例如:newblog)映射到 Sitemap 类(例如:NewsSitemap)。也可以映射到 Sitemap 类的实例(例如:NewsSitemap(some_var))。

静态视图的 Sitemap:

通常,希望搜索引擎抓取工具索引既不是对象详细信息页面也不是列表页的视图(例如 index 页面)。解决方案是在 items 中显式列出这些视图的网址名称,并在网站地图的 location 方法中调用 reverse()

from django.contrib.sitemaps import Sitemap from django.urls import reverse class StaticViewSitmap(Sitemap): priority = 0.7 changefreq = 'daily' def items(self): return ['index'] def location(self, obj): return reverse('index')

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容