我的sitemap.xml文件正在显示我应用的每个网址。 但是我的域的主/ -url(root-url)不在sitemap.xml中,因为它不是应用程序。 并且主页没有模型。但正如您在sitemap.py中看到的那样(见下文) 一个人需要一个模型和一个应用程序来返回在站点地图中创建条目的内容。 但我的主页在数据库中没有引用数据,所以我不知道要返回什么。
我该如何解决这个问题? [我尝试使用flatpages,但django-flatpages也没有帮助我,因为我无法告诉管理界面创建一个带有网址“/”的页面,它想要像“/about/temp.html/”这样的东西。 ]
我的项目目录看起来与此类似:
projectname/app1 /app2 /app3 settings.py local_settings.py sitemap.py etc...
from django.contrib.sitemaps import Sitemap from app1.models import ModelX from app2.models import ModelY class SitemapApp1(Sitemap): priority = 0.5 def items(self): return ModelX.objects.all() class SitemapApp2(Sitemap): priority = 0.5 def items(self): return ModelY.objects.all()我试过的是: 我创建了一个名为main的应用程序,其中包含models.py。在这个模型中,我想做一些愚蠢的事情,只是现在为主/ url建立一个模型,能够返回一些东西。
class Main(models.Model): name = models.CharField(max_length=64, unique=False, blank=True) def __unicode__(self): return self.name
projectname/app1 /app2 /app3 /main models.py __init__.py settings.py local_settings.py etc. sitemap.py
from django.contrib.sitemaps import Sitemap from app1.models import ModelX from app2.models import ModelY from main.models import Main class SitemapApp1(Sitemap): priority = 0.5 def items(self): return ModelX.objects.all() class SitemapApp2(Sitemap): priority = 0.5 def items(self): return ModelY.objects.all() class SitemapMain(Sitemap): priority = 0.5 def items(self): return Main.objects.all()
当然,重新启动服务器。 好吧,当我访问domain.com/sitemap.xml时,它不会给我一个错误 但我没有在sitemap.xml中显示domain.com-entry。
所以我相信,对于将domain.com/ root置于sitemap.xml的愚蠢方法,你有一个更好的解决方案。
感谢你的帮助。 非常感谢提前!
SC
答案 0 :(得分:2)
您可以尝试修改此示例我得到from here:
class MainSitemap(Sitemap):
def items(self):
return [self]
location = "/"
changefreq = "monthly"
priority = "1"