我试图实现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}),
答案 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类的确切目的是什么?