Ticket #3 (closed news: fixed)
Поддержка контекстных ссылок в Sape
| Reported by: | lostclus | Owned by: | lostclus |
|---|---|---|---|
| Priority: | minor | Component: | clients |
| Version: | 0.1 | Keywords: | |
| Cc: |
Description (last modified by lostclus) (diff)
В trunk добавлена экспериментальная поддержка контекстных ссылок сапы ([35], [36]). К базовому классу клиента и к классу площадки добавлен метод content_filter(), который принимает объект запроса и unicode-строку, содержащую HTML для обработки, возвращает обработанный HTML. Поддержка контекстных ссылок сапы реализована отдельным клиентом SapeContextClient (имя точки входа sape_context).
Пример использования:
>>> import linkexchange
>>> clients = [('sape_context', [], dict(user = 'user123456789',
... db_driver = ('shelv', [], dict(filename = 'sape-context-XXX.db'))))]
>>> platform = linkexchange.Platform(clients)
req = linkexchange.PageRequest(host = 'example.com', uri = '/',
... cookies = cookies_dict)
>>> new_content = platform.content_filter(req, old_content)
Внимание! Куки нужно передать обязательно, иначе будете палиться тегами <sape_index>.
Attachments
Change History
comment:4 Changed 2 years ago by lostclus
Использование контекстных ссылок с Django
Для использования контекстных ссылок с Django необходимо сделать следующее:
- Добавить 'linkexchange.django' в INSTALLED_APPS в файле settings.py проекта, а также добавить 'django.core.context_processors.request' в TEMPLATE_CONTEXT_PROCESSORS.
- Создать файл linkexchange.cfg, в котором определить клиент sape_context, и дать ссылку на него в параметре LINKEXCHANGE_CONFIG в файле settings.py.
- В шаблонах использовать ограничивающий тег linkexchange_filter или одноименный фильтр для обработки контента, в котором будут размещаться контекстные ссылки.
Фрагмент файла settings.py для примера:
from os.path import dirname, join
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'linkexchange.django',
)
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.request',
'linkexchange.django.context_processors.linkexchange',
)
LINKEXCHANGE_CONFIG = join(dirname(__file__), 'linkexchange.cfg')
Фрагмент файла linkexchange.cfg для примера:
[client-1] type = sape user = user12345 db_driver.type = shelve db_driver.filename = %(basedir)s/sape-XXX.db [client-2] type = sape_context user = user12345 db_driver.type = shelve db_driver.filename = %(basedir)s/sape-context-XXX.db
Пример шаблона:
{% load linkexchange_tags %}
{% linkexchange_filter request %}
В этом тексте будут размещаться контекстные ссылки.
{% endlinkexchange_filter %}
А здесь для размещения используется фильтр:
{{ page.content|linkexchange_filter:request }}
comment:5 Changed 2 years ago by lostclus
Сделал описание файла linkexchange.cfg.
comment:6 Changed 2 years ago by lostclus
Все найденные баги относительно контекстных ссылок исправлены, документация по контекстным ссылкам добавлена на страницах вики.
