Файл Sitemap.xml в сети Django + Gunicorn + Nginx


person José Luis    schedule 01.02.2015    source источник


Ответы (1)


Я думаю, если я правильно понимаю ваш вопрос, вы спрашиваете, почему Google выдает вам ошибку при доступе к 127.0.0.1:8001.

127.0.0.1 обычно ведет на локальный хост

и я почти уверен, что Google не сможет получить к нему доступ

вам понадобится доменное имя или, по крайней мере, IP-адрес вашего сервера.

как только они у вас есть, сделайте следующее:

создайте файл с именем generate_sitemaps.py

from foo.models import Foo
from django.contrib import site maps

class FooSitemap(sitemaps.Sitemap):
    changefreq = "hourly"
    priority = 0.5

    def items(self):
        return Foo.objects.all()

    def lastmod(self, obj):
        return obj.updated


# make sure this is at the bottom of your generate_sitemap.py file
sitemaps = {
    'foo': FooSitemap,
}

в вашем файле urls.py из generate_sitemap импортировать карты сайта

urlpatterns += patterns('',
    (r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'site maps': sitemaps})

)

в foo/models.py вам понадобится метод get_absolute_url для автоматического возврата для каждой записи

Class Foo(models.Model)
    ....
    updated = models.DateTimeField(auto_now=True)

    def get_absolute_url(self):
    return reverse('some_url', args=[self.id])

В вашем файле настроек:

    INSTALLED_APPS = (
    ....
    'django.contrib.sitemaps',
    )

если вам нужна дополнительная информация о настройке сайтов и доменов в django, воспользуйтесь сайтом Django. фреймворк

person lukeaus    schedule 02.02.2015
comment
Спасибо, я прекрасно понимаю, почему Google не разрешает загружать карту сайта с доменом 127.0.0.1. Мой вопрос: Можно ли заменить это: ‹url› ‹loc› 127.0.0.1:8000/pages/item1 ‹/loc› ... на это: ‹url› ‹loc› mydomain.com/pages/item1 ‹/loc › ... Я следую инструкциям Django Sitemap Framework, и возвращаемый абсолютный URL-адрес начинается с домена 127.0.0.1, а не с mydomain.com (потому что я использую прокси, я думаю). Я редактирую sitemap.xml и загружаю его как статический файл, но это только временное решение. - person José Luis; 03.02.2015
comment
Я думаю, вам нужно включить платформу сайтов, чтобы карты сайта могли возвращать правильный домен в вашем файле настроек: SITE_ID = 1, затем войдите в админку django и введите домен (в таблице django_sites). URL-адрес может быть трудно найти, возможно, что-то вроде: 127.0.0.1:8001/admin/ site/site/1 также я обновил приведенный выше код, чтобы убедиться, что «django.contrib.sitemaps» находится в INSTALLED_APPS, хотя у вас уже должно быть это - person lukeaus; 04.02.2015