[英]Django Site_ID's and Sitemaps
我正在尝试为 Google Search Console 设置站点地图,但在设置 Django“站点”框架时遇到了问题。 当我在项目设置文件的 settings.py 中放入“SITE_ID = 1”时,运行时收到警告
python manage.py ping_google [/sitemap.xml]
因为它返回“urllib2.HTTPError:HTTP 错误 400:错误请求”,并且不会生成 sitemap.xml。
# sitemaps.py
from django.contrib import sitemaps
from django.core.urlresolvers import reverse
class StaticViewSitemap(sitemaps.Sitemap):
priority = 0.5
changefreq = 'daily'
def items(self):
return ['index']
def location(self, item):
return reverse(item)
网址.py
from . import views
from .sitemaps import StaticViewSitemap
sitemaps = {
'static': StaticViewSitemap,
}
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
name='django.contrib.sitemaps.views.sitemap'),
]
我在 INSTALLED_APPS 下添加了django.contrib.sitemaps
和django.contrib.sites
。 我只有一个网站,或“应用程序”。 我在逻辑方面遗漏了一些东西,不确定如何正确定义 SITE_ID。 如果删除项目 settings.py 中的 SITE_ID = 1,我会收到错误“未定义 site_id”
您可以尝试使用请求,这更容易理解:
PING_URL = "http://www.google.com/webmasters/tools/ping"
def ping_google(sitemap_url=None, ping_url=PING_URL):
if not sitemap_url:
raise Exception('sitemap url must be given')
current_site = Site.objects.get_current()
url = "http://%s%s" % (current_site.domain, sitemap_url)
requests.get(
ping_url, params={'sitemap': url}
)
原始 ping_google 函数位于此处:
...\\site-packages\\django\\contrib\\sitemaps\\__init__.py
我忘记删除python manage.py ping_google [/sitemap.xml]
中的方括号,这导致命令不起作用。
如果要直接从视图运行命令:
from django.core.management import call_command
def daily_crons_view(request):
# Ping Google
return call_command('ping_google [/sitemap.xml]')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.