首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NoReverseMatch at /sitemap.xml在生成sitemap.xml django网站时

NoReverseMatch at /sitemap.xml在生成sitemap.xml django网站时
EN

Stack Overflow用户
提问于 2017-12-07 12:31:29
回答 1查看 326关注 0票数 1

很抱歉,我正在尝试用一些静态页面为一个基本的django博客应用程序生成sitemap.xml。我不知道为什么会发生这个错误。注意:我已经创建了一个虚拟博客文章,当我收到错误时它就存在了。

我试着查看django文档,但发现它太混乱了。在线教程也没有多大帮助。

代码语言:javascript
复制
**Error:**
NoReverseMatch at /sitemap.xml
Reverse for 'post_detail' with no arguments not found. 1 pattern(s) tried: 
['post/(?P<pk>\\d+)$']

**sitemap.py**
from django.contrib.sitemaps import Sitemap
from blog.models import Post

from blog.urls import urlpatterns as homeUrls
from django.core.urlresolvers import reverse

class PostSitemap(Sitemap):
    changefreq = "weekly"
    priority = 0.5

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


class StaticSitemap(Sitemap):
     priority = 0.8
     changefreq = 'weekly'

     # The below method returns all urls defined in urls.py file
     def items(self):
        mylist = [ ]
        for url in homeUrls:
            if url.name is None:
                pass;
            else:
                mylist.append(''+str(url.name))
        return mylist

     def location(self, item):
         return reverse(item)

**models.py**
class Post(models.Model):
    author = models.ForeignKey('auth.User')
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)

    def get_absolute_url(self):
        return reverse("post_detail",kwargs={'pk':self.pk})

**urls.py**
...
from django.contrib.sitemaps.views import sitemap
from .sitemaps import *

sitemaps = {
   'posts': PostSitemap(),
   'static': StaticSitemap(),
}

urlpatterns = [
    ...
    url(r'^sitemap\.xml$', sitemap, {'sitemaps': 
        sitemaps},name='django.contrib.sitemaps.views.sitemap'),       
        url(r'^post/(?P<pk>\d+)$', views.PostDetailView.as_view(), 
        name='post_detail'),
    ...
]

**settings.py**
INSTALLED_APPS - [
     ...
    'django.contrib.sitemaps',
    'django.contrib.sites',
    'robots',
     ...
]


I am very curious to understand how I can solve this error.
Thanks a lot !

Edit1;添加在url中,用于postdetail。

EN

回答 1

Stack Overflow用户

发布于 2022-06-24 20:48:20

来自@Alasdair的评论部分的回答很有帮助:

你打电话的方式

代码语言:javascript
复制
 reverse(item) isn't going to work for URL patterns that have arguments. 

你不能简单的打电话

代码语言:javascript
复制
 reverse('post_detail'), 

你需要一个主键。

代码语言:javascript
复制
 reverse('post_detail', args=[5]).
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47695237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档