Я настраиваю некоторые файлы Sitemap Django. Он отлично работает для всех объектов, которые у меня есть, но мне интересно, как я должен это делать, если я хочу что-то помещать в карту сайта, у которой нет объекта, связанного с ней.Django sitemaps без связанного объекта (только вид)
Например, у меня есть список категорий, и я могу просто вернуть набор запросов для всех категорий. URL-адреса будут example.com/cats/12 или что у вас есть. У меня также есть своего рода псевдо-корневая категория, которая не связана с объектом категории. Эта страница (example.com/cats/) - это просто представление, которое включает все дочерние категории без родителя и список продуктов. Точка, я не могу использовать get_absolute_url, потому что нет «корневого» объекта. Мое решение было получить QuerySet как список, добавить «None» объект, а затем получить соответствующий URL:
class CatsSitemap(Sitemap):
changefreq = "weekly"
priority = 0.4
def items(self):
cats = list(Category.objects.all())
cats.append(None)
return cats
def location(self, obj):
if(obj != None):
return reverse('cats_sub_category', args=[obj.pk])
else:
return reverse('cats_root')
ли кто-нибудь увидеть проблемы с этим? Будет ли они возвращать их в список производительности? Реально у нас будет, возможно, сотни категорий, но, вероятно, не намного больше. Слишком много?
Кажется довольно хорошим решением для меня. Вы должны видеть, что это включено в модуль sitemaps для django, я думаю, что это довольно универсально полезно. Я не уверен в использовании datetime.datetime.now() как timestamp lastmod, хотя –
Вы можете сделать параметры «priority» и «changefreq» для __init__, хотя, чтобы поддерживать добавление нескольких именованных страниц с разными приоритетами и changefreqs –