【发布时间】:2014-12-27 04:46:05
【问题描述】:
我有一个“BigPage”模型,其中包含一个名为“pagename”的元素,该元素的唯一设置为 True。每次通过将 URL myapp.com/pagename 添加到我的项目的站点地图来创建具有新“页面名称”元素的新 BigPage 模型时,我想使用 django-sitemaps 框架来生成、填充和持续更新 sitemap.xml 文件。 xml 文件。这是我的 BigPage 模型:
class BigPage(models.Model):
Pagename = models.CharField(max_length=128, blank=True, unique=True, null=True) #they will enter this input into a form field to reserve their unique url at myapp.com/pagename
PageNameOwner = models.CharField(max_length=128, blank=True, null=True) #owner of page enters their name
OwnerGender = models.CharField(max_length=7, choices=(('male', 'Male'), ('female', 'Female')), blank=True, null=True)
PageViewsCounter = models.IntegerField(null=False, default=0)
PageIsRemoved = models.BooleanField(default=False) #true if mods take down a person’s page
def __unicode__(self):
return self.Pagename
我创建了以下 sitemap.py 文件并将其放置在我的应用程序的 BigPage 模型所在的文件夹中:
class BigPageSitemap(Sitemap):
changefreq = 'daily'
priority = 0.5
def items(self):
return BigPage.objects.all()
然后,在主项目 url.py 文件(不是应用程序 url.py 文件)中,我添加了这个:
sitemaps = {
'Name of Page':BigPageSitemap
}
到 urlpatterns 元素:
url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps})
我的应用程序 url.py 具有以下 url 模式,如果在 URL 字段中输入与 pagename 元素匹配的术语,然后可以查询该元素以检索 BigPage 对象,则它会加载该页面,但如果输入的 URL 是不等于pagename元素,它会给用户一个404:
url(r'^(?P<url_param>[a-zA-Z0-9_.-]*)/$', views.view_for_all_BigPages, name='view_for_all_BigPages'),)
毕竟,如果我检查应用程序文件夹或主项目文件夹,似乎没有生成站点地图文件。如果我访问 myapp.com/sitemap.xml,我会收到以下错误:
'BigPage' object has no attribute 'get_absolute_url'
我做错了什么?我真的很感激任何帮助。我已经尝试了好几天了。
【问题讨论】: