11.03.2010 09:58

  1. Добрый день.
    Пытаюсь создать сайтмэп методами Django.
    В хелпе сказано, что ссылка вида '/foo/bar/', хорошая. Ну я так и делаю:
    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)
    Но при просмотре карты сайта вижу в начале ссылки - "http://example.com"
    <url>
    <loc>http://example.com/cat_9</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    </url>
    В доках про это ничего не сказано :(. Объясните, как от этого избавиться?
  2. igorekk

    1 ↑
    0 ↓
    Надо в админке (приложение Sites) исправить example.com на youdomain.com
  3. О! Спасибо, нашел в таблице django_site.
    Тогда еще один вопрос: я пишу простенькую CMS для саттелитов и админка у него удаленная, т.е. дефолтная не предусмотренна. Поэтому просто добавил в файл сайтмэпов такой код:
    from django.contrib.sites.models import Site
    s = Site.objects.get(id__exact = 1)
    s.domain = 'mysite.com'
    s.save()
    Вопрос, кто в курсе. В этой таблице всегда только одна запись с id=1? Или есть какие-то варианты?
  4. igorekk

    0 ↑
    0 ↓
    Если на одном проекте висит несколько сайтов, то записей может быть несколько.

    PS. Текущий сайт будет получаться автоматически:
    current_site = Site.objects.get_current()
  5. Огромное спасибо. Теперь, вроде, все хорошо:
    import settings
    from django.contrib.sites.models import Site
    s = Site.objects.get_current()
    s.domain = settings.MY_HOST
    s.save()
  6. igorekk

    0 ↑
    0 ↓
    Александр, вы не поняли, как мне кажется.
    Не надо писать этот код :)
    Нужный домен будет подставляться автоматически в sitemap.
  7. igorekk

    0 ↑
    0 ↓
    Прощу прощения. Ошибся. Для автоматического определения сайта надо подключать middleware.
  8. Не знаю, кто кого не понял ;)
    Тут смысл такой, чтобы мне вообще не нужно было заходить в админку.
    Может, вы что-то типа этого имели ввиду:
        def location(self, obj):
    self.current_site = settings.MY_HOST
    return '/cat_' + str(obj.cat) + '/p_' + str(obj.page)
    Дык не работает :-(
    Мне нужно чтобы просто залил все на хостинг, настроил бд и все заработало. Без лазанья по админке.
  9. igorekk

    0 ↑
    0 ↓
    Что вы понимаете под "настроил БД"? Выполнение syncdb?
  10. Нет. Сделал импорт дампа-каркаса в phpmyadmin и прописал настройки в settings.py
  11. igorekk

    0 ↑
    0 ↓
    Предлагаю следующие:

    1. Отнаследоваться от Sitemap и переопределить метод get_urls и там уже делать всё, что хочется.
    2. Сделать команду для manage.py, которая будет запрашивать домен и прописывать его в таблице django_site (это если есть доступ по SSH).
  12. Да. Первый вариант - самый подходящий.
    В очередной раз убеждаюсь, что нужно смотреть в исходники Django. Благо Питон этому благоприятствует.

    Спасибо за ответы.
  13. igorekk

    0 ↑
    0 ↓
    Вдогонку. Если у вас много таких сайтов, то может имеет смысл держать их все на одном хосте?:)
  14. Не понял. ЧТо значит на одном хосте? Хостинге? Они и так там на одном крутятся.
  15. igorekk

    0 ↑
    0 ↓
    И для каждого сайта создаётся своя база и свой проект? И полностью одинаковый контент?
  16. Не, контент не одинаковый.
    В остальном - все верно. Когда тарифный план раздуется, посмотрю в какую сторону дешевле расширяться будет, может префиксы в таблицы БД сделаю. Но вообще, особо раздуваться не планирую. Лучше несколько сайтов, но хороших, чем куча ГС.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.