找不到页面: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。
要启用站点框架,请按照下列步骤操作:
- 将 'django.contrib.sites' 添加到您的 INSTALLED_APPS 设置。
定义一个 SITE_ID 设置:
SITE_ID = 1
运行 迁移。
有关详细信息,请查看 documentation。
你的代码很好,你的环境是什么错(可能你使用的是默认的Django站点,也就是www.example.com)。将其更改为本地环境(典型的 127.0.0.1:8000
)。
要在 Django 中执行此操作,您需要执行以下操作:
- 检查您是否是 运行 命令提示符中的本地服务器,如果不是,请键入
python manage.py runserver
.
- 转到
http://127.0.0.1:8000/admin/sites/site/
- 将默认站点(通常 Django 中的默认站点是
example.com
)更改为 127.0.0.1:8000
。这需要在 域和显示名称 中完成(当您不在生产环境中时)。
- 在浏览器的本地网页中按
F5
。
- 转到您的站点地图页面 (
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。
要启用站点框架,请按照下列步骤操作:
- 将 'django.contrib.sites' 添加到您的 INSTALLED_APPS 设置。
定义一个 SITE_ID 设置:
SITE_ID = 1
运行 迁移。
有关详细信息,请查看 documentation。
你的代码很好,你的环境是什么错(可能你使用的是默认的Django站点,也就是www.example.com)。将其更改为本地环境(典型的 127.0.0.1:8000
)。
要在 Django 中执行此操作,您需要执行以下操作:
- 检查您是否是 运行 命令提示符中的本地服务器,如果不是,请键入
python manage.py runserver
. - 转到
http://127.0.0.1:8000/admin/sites/site/
- 将默认站点(通常 Django 中的默认站点是
example.com
)更改为127.0.0.1:8000
。这需要在 域和显示名称 中完成(当您不在生产环境中时)。 - 在浏览器的本地网页中按
F5
。 - 转到您的站点地图页面 (
http://127.0.0.1:8000/sitemap.xml
) - 瞧瞧!有你的站点地图。