Django 1.6:/ sitemap.xml中的NoReverseMatch

时间:2014-08-09 17:05:19

标签: python django

我试图实现django站点地图,但是我收到以下错误。我不知道自己做错了什么。这是相关的代码和回溯。

File "mysite/sitemap.py" in location
  20.         return reverse(obj)
File "/Library/Python/2.7/site-packages/django/core/urlresolvers.py" in reverse
  532.     return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
File "/Library/Python/2.7/site-packages/django/core/urlresolvers.py" in _reverse_with_prefix
  452.                              (lookup_view_s, args, kwargs, len(patterns), patterns))

Exception Type: NoReverseMatch at /sitemap.xml
Exception Value: Reverse for 'name_of_url' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

这是sitemap.py文件

from django.contrib.sitemaps import Sitemap
from django.core.urlresolvers import reverse
from meddy1.models import Doctor
import datetime

class Sitemap(Sitemap):
    def __init__(self, names):
        self.names = names

    def items(self):
        return self.names

    def changefreq(self, obj):
        return 'weekly'

    def lastmod(self, obj):
        return datetime.datetime.now()

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


class DoctorSitemap(Sitemap):
    changefreq = "Daily"
    priority = 1

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

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

这是urls.py文件

url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}),

1 个答案:

答案 0 :(得分:0)

如果您仔细阅读文档: https://docs.djangoproject.com/en/1.6/ref/contrib/sitemaps/#django.contrib.sitemaps.Sitemap.location

您会发现Django为每个Sitemap对象调用get_absolute_url(除非您指定了位置)。 您可以使用以下内容定义局部:reverse(obj)这究竟指向何处?您的反向应指向有效的注册网址。另外,你在哪里读到该位置收到一个参数? location是一个属性或返回路径的方法(不需要参数)。

您的错误与站点地图无关,而是在您注册的站点地图模型中的网址解析。

最后,您定义的Sitemap类的确切目的是什么?