我正在尝试为Google搜索控制台设置一个站点地图,在设置Django“站点”框架时,我遇到了问题。当我将"SITE_ID = 1“放入项目设置文件的settings.py中时,运行时会收到警告
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)urls.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'),
]我在django.contrib.sitemaps和django.contrib.sites中添加了INSTALLED_APPS。我只有一个网站,或“应用程序”。在逻辑方面,我遗漏了一些东西,不知道如何正确定义SITE_ID。如果我删除项目site_id中的SITE_ID =1,则会得到错误"no settings.py defined“
发布于 2016-02-21 02:47:56
我忘了删除python manage.py ping_google [/sitemap.xml]中的方括号,这会导致命令不能工作。
发布于 2016-02-20 02:05:10
您可以尝试处理请求,这要容易得多:
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
发布于 2021-03-06 08:20:04
如果您想直接从视图运行命令:
from django.core.management import call_command
def daily_crons_view(request):
# Ping Google
return call_command('ping_google [/sitemap.xml]')https://stackoverflow.com/questions/35517795
复制相似问题