为什么我的站点地图显示我帖子的 /number 而不是 /title?
Why my Sitemap show /number and not /title of my posts?
我已将站点地图功能添加到我的博客中,并且运行良好。但是在我的 /sitemap.xml 文件中,它显示的不是标题,而是 post 的编号。
我试图将我的 urls.py 文件中的定义更改为,但它在我的域后显示了一些奇怪的东西。
可能我哪里有什么小错误
我的主要 urls.py 文件:
from django.contrib import admin
from django.urls import path, include
from django.contrib.sitemaps.views import sitemap
from blog.sitemaps import PostSitemap
from blog import views as blog_views
sitemaps = {
'posts': PostSitemap,
}
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
path('sitemap.xml', sitemap, {'sitemaps': sitemaps},
name='django.contrib.sitemaps.views.sitemap'),
path('<int:id>', blog_views.PostDetail, name='post'),
]
我的 sitemaps.py 文件:
from django.contrib.sitemaps import Sitemap
from .models import Post
class PostSitemap(Sitemap):
def items(self):
return Post.objects.all()
我的 models.py 文件:
from django.urls import reverse
def get_absolute_url(self):
return reverse('post', args=[str(self.id)])
哦,我发现我的错误。
我在我的 models.py 文件 self.id 中定义。我将其更改为 self.slug
,并将 urls.py 更改为 <slug:slug>
现在可以正常使用了。
我已将站点地图功能添加到我的博客中,并且运行良好。但是在我的 /sitemap.xml 文件中,它显示的不是标题,而是 post 的编号。 我试图将我的 urls.py 文件中的定义更改为,但它在我的域后显示了一些奇怪的东西。 可能我哪里有什么小错误
我的主要 urls.py 文件:
from django.contrib import admin
from django.urls import path, include
from django.contrib.sitemaps.views import sitemap
from blog.sitemaps import PostSitemap
from blog import views as blog_views
sitemaps = {
'posts': PostSitemap,
}
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
path('sitemap.xml', sitemap, {'sitemaps': sitemaps},
name='django.contrib.sitemaps.views.sitemap'),
path('<int:id>', blog_views.PostDetail, name='post'),
]
我的 sitemaps.py 文件:
from django.contrib.sitemaps import Sitemap
from .models import Post
class PostSitemap(Sitemap):
def items(self):
return Post.objects.all()
我的 models.py 文件:
from django.urls import reverse
def get_absolute_url(self):
return reverse('post', args=[str(self.id)])
哦,我发现我的错误。
我在我的 models.py 文件 self.id 中定义。我将其更改为 self.slug
,并将 urls.py 更改为 <slug:slug>
现在可以正常使用了。