以下是为我的某个应用博客'创建站点地图的代码。在我的网站:(使用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(在'博客' app目录下)
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/
有一个与我输入的网址匹配的网址(第八个)。为什么它说不匹配'?
答案 0 :(得分:3)
您的代码很好,您的环境是错误(也许您使用的是默认的Django网站,即www.example.com)。将其更改为本地环境(典型的127.0.0.1:8000
)。
要在Django中执行此操作,您需要执行以下操作:
python manage.py runserver
。http://127.0.0.1:8000/admin/sites/site/
example.com
)更改为127.0.0.1:8000
。这需要在域和显示名称中完成(当您不在生产环境中时)。F5
。 http://127.0.0.1:8000/sitemap.xml
)答案 1 :(得分:1)
像这样编写完整的/sitemap.xml并尝试 输入此网址并加载页面 http://127.0.0.1:8000/sitemap.xml/
答案 2 :(得分:1)
错误是
网站匹配查询不存在
这意味着您必须设置和配置Sites framework。
要启用网站框架,请按以下步骤操作:
定义SITE_ID设置:
SITE_ID = 1
运行迁移。
有关详细信息,请查看documentation。