Карта сайта Django: объявление XML разрешено только в начале документа - PullRequest
1 голос
/ 14 октября 2019

Я работал над реализацией файлов Sitemap в Django-2.2 для сайта блога.

Структура кода, которой я следовал, была: *

Sitemaps.py

from django.contrib.sitemaps import Sitemap
from .models import Post

class PostSitemap(Sitemap):    
    changefreq = "never"
    priority = 0.9

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

urls.py

from django.contrib.sitemaps.views import sitemap
from .sitemaps import PostSitemap

sitemaps = {
    'posts': PostSitemap
}

urlpatterns = [
    url(r'^sitemap\.xml/$', sitemap, {'sitemaps' : sitemaps } , name='sitemap'),
]

settings.py

INSTALLED_APPS = [
    ...
    'django.contrib.sites',
    'django.contrib.sitemaps',
]

SITE_ID = 1

Я думаю, это было довольномного это, как я ссылался на очень много ссылок. но когда я открываю 127.0.0.1:8000/sitemap.xml Это выдает мне следующую ошибку -

This page contains the following errors:
error on line 2 at column 6: XML declaration allowed only at the start of the document
Below is a rendering of the page up to the first error.

Вот и все, ничего в журнале сервера. Пожалуйста, если кто-нибудь может, пожалуйста, помогите мне. Заранее спасибо

1 Ответ

1 голос
/ 14 октября 2019

Ваш XML-документ имеет новую строку в начале. Это основная причина, по которой вы получаете эту проблему.

Пожалуйста, измените файл urls.py в соответствии с документом.

https://docs.djangoproject.com/en/2.2/ref/contrib/sitemaps/

Ваш URL должен выглядеть следующим образом.

from django.contrib.sitemaps.views import sitemap

path('sitemap.xml', sitemap, {'sitemaps': sitemaps},
     name='django.contrib.sitemaps.views.sitemap')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...