-
Добрый день.
Пытаюсь создать сайтмэп методами Django.
В хелпе сказано, что ссылка вида '/foo/bar/', хорошая. Ну я так и делаю:
Но при просмотре карты сайта вижу в начале ссылки - "http://example.com"class CatsSitemap(Sitemap):
changefreq = "monthly"
priority = 0.5
def items(self):
res = Tree.objects.all()
return res
def location(self, obj):
return '/cat_' + str(obj.id)
В доках про это ничего не сказано :(. Объясните, как от этого избавиться?<url>
<loc>http://example.com/cat_9</loc>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url> -
Надо в админке (приложение Sites) исправить example.com на youdomain.com
-
О! Спасибо, нашел в таблице django_site.
Тогда еще один вопрос: я пишу простенькую CMS для саттелитов и админка у него удаленная, т.е. дефолтная не предусмотренна. Поэтому просто добавил в файл сайтмэпов такой код:
Вопрос, кто в курсе. В этой таблице всегда только одна запись с id=1? Или есть какие-то варианты?from django.contrib.sites.models import Site
s = Site.objects.get(id__exact = 1)
s.domain = 'mysite.com'
s.save() -
Если на одном проекте висит несколько сайтов, то записей может быть несколько.
PS. Текущий сайт будет получаться автоматически:current_site = Site.objects.get_current() -
Огромное спасибо. Теперь, вроде, все хорошо:
import settings
from django.contrib.sites.models import Site
s = Site.objects.get_current()
s.domain = settings.MY_HOST
s.save() -
Александр, вы не поняли, как мне кажется.
Не надо писать этот код :)
Нужный домен будет подставляться автоматически в sitemap. -
Прощу прощения. Ошибся. Для автоматического определения сайта надо подключать middleware.
-
Не знаю, кто кого не понял ;)
Тут смысл такой, чтобы мне вообще не нужно было заходить в админку.
Может, вы что-то типа этого имели ввиду:
Дык не работает :-(def location(self, obj):
self.current_site = settings.MY_HOST
return '/cat_' + str(obj.cat) + '/p_' + str(obj.page)
Мне нужно чтобы просто залил все на хостинг, настроил бд и все заработало. Без лазанья по админке. -
Что вы понимаете под "настроил БД"? Выполнение syncdb?
-
Нет. Сделал импорт дампа-каркаса в phpmyadmin и прописал настройки в settings.py
-
Предлагаю следующие:
1. Отнаследоваться от Sitemap и переопределить метод get_urls и там уже делать всё, что хочется.
2. Сделать команду для manage.py, которая будет запрашивать домен и прописывать его в таблице django_site (это если есть доступ по SSH). -
Да. Первый вариант - самый подходящий.
В очередной раз убеждаюсь, что нужно смотреть в исходники Django. Благо Питон этому благоприятствует.
Спасибо за ответы. -
Вдогонку. Если у вас много таких сайтов, то может имеет смысл держать их все на одном хосте?:)
-
Не понял. ЧТо значит на одном хосте? Хостинге? Они и так там на одном крутятся.
-
И для каждого сайта создаётся своя база и свой проект? И полностью одинаковый контент?
-
Не, контент не одинаковый.
В остальном - все верно. Когда тарифный план раздуется, посмотрю в какую сторону дешевле расширяться будет, может префиксы в таблицы БД сделаю. Но вообще, особо раздуваться не планирую. Лучше несколько сайтов, но хороших, чем куча ГС.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

