有没有办法将自定义位置添加到站点地图中?我想将我的主页添加到站点地图中,但我不使用flatpages
.
我应该开始使用平面页面并手动将主页添加到数据库中吗?您推荐哪种方法?我django.contrib.sitemaps
用来生成站点地图。
有没有办法将自定义位置添加到站点地图中?我想将我的主页添加到站点地图中,但我不使用flatpages
.
我应该开始使用平面页面并手动将主页添加到数据库中吗?您推荐哪种方法?我django.contrib.sitemaps
用来生成站点地图。
您可以为特定视图定义站点地图,否则不包含在站点的站点地图中,如下面的我为自己的 Django 应用程序开发的:
from django.core.urlresolvers import reverse
from django.contrib.sitemaps import Sitemap
class StaticSitemap(Sitemap):
"""Reverse static views for XML sitemap."""
def __init__(self, items_in=[]):
self.items_list = items_in
def items(self):
# Return list of url names for views to include in sitemap
return self.items_list
def location(self, item):
# if kwargs not in item set as None
kwargs = item['kwargs'] if 'kwargs' in item else None
return reverse(item['view_name'], kwargs=kwargs)
基本上,这会将视图名称(在 中指定urls.py
)反转为将显示在站点地图中的实际 URL。
用法
指定您的sitemap.xml
URL,urls.py
以便它采用下面的摘录中的sitemaps
参数:urls.py
...
(
r'^sitemap\.xml$',
'django.contrib.sitemaps.views.sitemap',
{'sitemaps': sitemaps}
),
...
dict 应该只包含一个条目,sitemaps
例如:
sitemaps = {
'views': StaticSitemap(STATIC_VIEWS),
...
}
whereSTATIC_VIEWS
是这样构造的:
STATIC_URLS = [
'home_page', 'about_page', 'disclaimer_page', # any other view name
]
STATIC_VIEWS = []
for url in STATIC_URLS:
STATIC_VIEWS.append({'view_name':url})