Наверняка, баян, но не поделиться не могу – слишком уж вещь хорошая.
Итак, LinkExchange - инструмент для встраивания кода бирж обмена ссылками в сайты написанные с применением python’a. Главная ссылка на wiki данного инструмента http://linkexchange.org.ua/.
Имеется поддержка любимой django - http://linkexchange.org.ua/wiki/LinkExchangeИDjango, а также MoinMoin, Trac, TurboGears.
Подключается к django проекту, как и другие хорошие pluggable-приложения, в 3 шага:
- Добавляем 'django.core.context_processors.request' в TEMPLATE_CONTEXT_PROCESSORS.
- Создаем файл linkexchange.cfg, делаем на него ссылку из settings.py
- Вставляем в шаблоны переменную linkexchange_blocks.
Можно ставить через easy_install, так как в списке пакетов на PyPI библиотека LinkExchange присутствует.
UPD. Использовал библиотеку в одном из своих проектов (поставил setuptool’ом), набрел на некоторые отступления от “3 этапного туториала”. Ниже публикую все изменения, которые пришлось внести в проект, чтоб он начал работать с sape библиотекой linkexchange:
# settings.py:
INSTALLED_APPS = (
...
'linkexchange.django',
)
TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.core.context_processors.request',
'linkexchange.django.context_processors.linkexchange',
)
LINKEXCHANGE_CONFIG = join(working_dir, 'linkexchange.cfg') # working_dir = os.path.dirname(__file__)
# linkexchange.cfg:
[options]
host = f.labwr.ru
[client-1]
type = sape
user = идмоегоюзерабезкавычек
db_driver.type = shelve
db_driver.filename = полныйпутьдокаталогапроекта/linksdb/linkexchange.db
[formatter-1]
type = list
count = 2
class_ = linx
prefix = "- "
suffix = ". "
[formatter-2]
type = inline
count = 2
class_ = linx
delimiter = " | "
prolog = "| "
epilog = " |"
[formatter-3]
type = list
count = none
class_ = linx
prefix = "+ "
suffix = ". "
# templates/base.html:
{% load linkexchange_tags %}
{{ linkexchange_blocks }}
У каталога linksdb выставлены разрешения на запись всем и владелец под которым работает apache - таким образом я решал проблему с блокировкой файла, но наверняка есть более правильный способ.
2 комментария:
Это ваш реальный опыт или вы с сайта скопировали? У меня просто не завелось в django такая конструкция.
Мой реальный, но с оговоркой: я завел это на локальной машине (она у меня с windows vista).
Под debian возникали странные проблемы с блокировкой файла настроек, но я решил их вынеся в подкаталог файл с ссылками.
Окончательный список манипуляций над кодом добавил в пост.
Отправить комментарий