2016-02-20 29 views
0

我試圖設置Google Search Console的Sitemap,並且在設置Django「網站」框架時遇到問題。當我把「SITE_ID = 1」在我的settings.py在項目設置文件,我跑Django Site_ID's和Sitemaps

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'), 
] 

我INSTALLED_APPS下添加django.contrib.sitemapsdjango.contrib.sites。我只有一個網站,或「應用程序」。我在邏輯端丟失了一些東西,不確定如何正確定義SITE_ID。我得到的錯誤「沒有明確的SITE_ID」如果我刪除SITE_ID = 1在我的項目settings.py

回答

1

我忘了刪除python manage.py ping_google [/sitemap.xml]這將導致命令無法正常工作的方括號。

1

您可以請求嘗試,這是很容易理解:

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

+0

用這個代替現有的ping_google函數,然後從current_site = Site.objects.get_current()中取回「NameError:全局名稱」Site'未定義' – TheFlyingProgrammer

+0

@TheFlyingProgrammer你需要導入Site model:'from django.contrib.sites.models import site' – doniyor

+0

不幸的是,這使我的網站打破了「django.core.exceptions.AppRegistryNotReady:應用程序尚未加載。」當我刪除該網站時該網站正常工作 – TheFlyingProgrammer