1

我一直致力于在 Django-2.2 上为博客网站实施站点地图。

我遵循的代码结构是-

站点地图.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()

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

设置.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.

就是这样,服务器日志上没有任何内容。请,如果有人可以请帮助我。提前致谢

4

1 回答 1

1

您的 xml 文档开头有新行。这是您遇到此问题的主要原因。

请根据文档更改您的 urls.py 文件。

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

您的网址应如下所示。

from django.contrib.sitemaps.views import sitemap

path('sitemap.xml', sitemap, {'sitemaps': sitemaps},
     name='django.contrib.sitemaps.views.sitemap')
于 2019-10-14T11:32:57.350 回答