Корневой URL-адрес карты сайта Django не отображается - PullRequest
2 голосов
/ 02 марта 2011

мой файл sitemap.xml показывает каждый URL моих приложений, как и должен. но основной / -url (root-url) моего домена нет в sitemap.xml, потому что это не приложение. и нет моделей для главной страницы. но, как вы можете видеть в sitemap.py (см. ниже) нужна модель и приложение, чтобы вернуть что-то для создания записи в карте сайта. но на моей главной странице нет ссылочных данных в базе данных, поэтому я не знаю, что вернуть.

как мне решить эту проблему? [я пробовал с плоскими страницами, но django-flatpages мне тоже не помогли, потому что я не мог сказать интерфейсу администратора создать страницу с URL "/", он хотел что-то вроде "/about/temp.html/". ]

мой каталог проектов выглядит примерно так:

projectname/app1
           /app2
           /app3
           settings.py
           local_settings.py
           sitemap.py
           etc...

sitemap.py

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 

sitemap.py new


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 но я не обнаруживаю запись domain.com в sitemap.xml.

Так что я уверен, что у вас есть намного лучшее решение для моего глупого подхода - получить domain.com/ root в sitemap.xml.

Ценю вашу помощь. Заранее большое спасибо!

СБН

1 Ответ

2 голосов
/ 03 марта 2011

Вы можете попытаться изменить этот пример, который я получил отсюда :

class MainSitemap(Sitemap):

    def items(self):
      return [self]

    location = "/"
    changefreq = "monthly"
    priority = "1"
...