I'm trying to implement sitemaps in my django application but i get the following error. I'm using the django sitemap's framework. I don't know what I'm doing wrong.
Traceback:
File "mysite/urls.py" in <module>
3. from sitemap import *
File "mysite/sitemap.py" in <module>
5. class Sitemap(sitemaps.Sitemap):
Exception Type: NameError at /
Exception Value: name 'sitemaps' is not defined
Here is the sitemap.py file
from django.contrib.sitemaps import Sitemap
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
Here is the urls.py file
from django.conf.urls import patterns, include, url
from django.contrib import admin
from sitemap import *
admin.autodiscover()
sitemaps = {
'pages':Sitemap(['homepage_imprint', 'homepage_archive']),
'doctor':DoctorSitemap,
'site':Sitemap(['name_of_url', 'name_of_url']),
}
urlpatterns = patterns('',
url(r'^', include('meddy1.urls')),
url(r'^', include('django.contrib.auth.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^sitemap\.xml', include('django.contrib.sitemaps.views.sitemap'),{'sitemaps': sitemaps}),
)
You imported
Sitemaps
from the module, not the module itself. Remove the module name:This will just about work, even though you are replacing the imported class here.
Alternatively and arguably clearer as to what you are doing, adjust your import of the module. Change the import from:
to: