找不到页面:http://127.0.0.1:8000/sitemap.xml/

Page not found: http://127.0.0.1:8000/sitemap.xml/

这里是为我的站点中的一个应用 'blog' 创建站点地图的代码:(使用 Django 2.0)

settings.py

INSTALLED_APPS += [
'django.contrib.sites',
'django.contrib.sitemaps',
] 
TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
        ],
    },
},
]

urls.py

from django.urls import include, path
from django.contrib.sitemaps.views import sitemap
from blog.sitemaps import PostSiteMap

sitemaps = {'posts': PostSiteMap}

urlpatterns += [
path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, 
name='django.contrib.sitemaps.views.sitemap')
]

sitempas.py(在'blog'应用程序目录下)

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


class PostSiteMap(Sitemap):
    changefreq = 'weekly'
    priority = 0.5

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

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

没有出现sitemap.xml:http://127.0.0.1:8000/sitemap.xml/

有url(第八个)与我输入的匹配。为什么它说 'not match'?

像这样写完整/sitemap.xml然后试试 输入此 url 并加载页面 http://127.0.0.1:8000/sitemap.xml/

错误是

Site matching query does not exist

这意味着您必须设置和配置 Sites framework

要启用站点框架,请按照下列步骤操作:

  1. 将 'django.contrib.sites' 添加到您的 INSTALLED_APPS 设置。
  2. 定义一个 SITE_ID 设置:

    SITE_ID = 1

  3. 运行 迁移。

有关详细信息,请查看 documentation

你的代码很好,你的环境是什么(可能你使用的是默认的Django站点,也就是www.example.com)。将其更改为本地环境(典型的 127.0.0.1:8000)。

要在 Django 中执行此操作,您需要执行以下操作:

  1. 检查您是否是 运行 命令提示符中的本地服务器,如果不是,请键入 python manage.py runserver.
  2. 转到http://127.0.0.1:8000/admin/sites/site/
  3. 将默认站点(通常 Django 中的默认站点是 example.com)更改为 127.0.0.1:8000。这需要在 域和显示名称 中完成(当您不在生产环境中时)。
  4. 在浏览器的本地网页中按 F5
  5. 转到您的站点地图页面 (http://127.0.0.1:8000/sitemap.xml)
  6. 瞧瞧!有你的站点地图。