django-yaturbo documentation¶
https://github.com/idlesign/django-yaturbo
Description¶
Reusable Django app to enable Yandex Turbo Pages for your site
This app allows you to define Yandex Turbo pages feeds in term similar to those of Django Syndication Feed Framework contrib.
Table of Contents¶
Quickstart¶
- Inherit your feed class from YandexTurboFeed:
# feeds.py
from yaturbo import YandexTurboFeed
class TurboFeed(YandexTurboFeed):
"""
More information on Django Syndication Feed Framework configuration:
https://docs.djangoproject.com/en/2.0/ref/contrib/syndication/
"""
turbo_sanitize = True # Let's strip HTML tags unsupported by Turbo pages.
def item_turbo(self, item):
# By default Turbo contents is taken from `item_description`.
# Here we take turbo page contents from `html` attribute of an item.
# Since we have `turbo_sanitize = True`, our HTML will be sanitized
# automatically.
#
# Take a note, that if we return falsy item would be considered
# as not having turbo contents at all.
#
return item.get('html', '')
# You can also override other item_turbo_* family members.
- Pass an instantiated (and optionally configured) feed object to urlpatterns:
# urls.py
from .feeds import TurboFeed
feed = TurboFeed()
# configure Yandex Metrika counter
feed.configure_analytics_yandex('123456789')
# configure Yandex Advertisement Network
feed.configure_ad_yandex('A-123', 'page-top')
urlpatterns = [
...
path('feeds/turbo/', feed),
...
]
API¶
-
class
yaturbo.toolbox.
YandexTurboFeed
¶ Yandex Turbo Pages Feed.
from yaturbo import YandexTurboFeed class TurboFeed(YandexTurboFeed): ''' More information on Django Syndication Feed Framework configuration: https://docs.djangoproject.com/en/2.0/ref/contrib/syndication/ ''' turbo_sanitize = True # Let's strip HTML tags unsupported by Turbo pages. def item_turbo(self, item): return 'turbo contents' feed = TurboFeed() # configure Yandex Metrika counter feed.configure_analytics_yandex('123456789') # configure Yandex Advertisement Network feed.configure_ad_yandex('A-123', 'page-top') urlpatterns = [ ... path('turbo/', feed), ... ]
-
configure_ad_yandex
(ident, turbo_id=u'')¶ Configure Yandex Advertisement Network.
Parameters: - ident (str|unicode) – Ad ID.
- turbo_id (str|unicode) – ID of a place (figure) on Turbo page where to put an Ad block.
-
configure_analytics_google
(ident)¶ Configure Google Analytics counter.
Parameters: ident (str|unicode) – Counter ID.
-
configure_analytics_yandex
(ident, params=None)¶ Configure Yandex Metrika analytics counter.
Parameters: - ident (str|unicode) – Metrika counter ID.
- params (dict) – Additional params.
-
item_turbo
(item)¶ This can be overridden to set turbo contents.
Parameters: item – Return type: str|unicode
-
item_turbo_source
(item)¶ This can be overridden to set turbo source URL.
Can be used with Yandex Metrika.
Parameters: item – Return type: str|unicode
-
item_turbo_topic
(item)¶ This can be overridden to set turbo page topic (title).
Can be used with Yandex Metrika.
Parameters: item – Return type: str|unicode
-
turbo_sanitize
= False¶ Whether to automatically sanitize HTML contents returned from .item_turbo().
Can be useful if you do not keep special HTML for Turbo pages.
-
-
yaturbo.toolbox.
sanitize_turbo
(html, allowed_tags=[u'a', u'abbr', u'b', u'big', u'blockquote', u'br', u'button', u'code', u'dd', u'del', u'div', u'dl', u'dt', u'em', u'figcaption', u'figure', u'form', u'h1', u'h2', u'h3', u'h4', u'h5', u'h6', u'header', u'hr', u'i', u'iframe', u'img', u'ins', u'li', u'menu', u'meta', u'ol', u'p', u'pre', u'small', u'source', u'strong', u'sub', u'sup', u'table', u'td', u'th', u'tr', u'u', u'ul', u'video'], allowed_attrs={u'a': [u'data-turbo', u'href'], u'abbr': [u'title'], u'button': [u'data-agreement-company', u'data-agreement-link', u'data-background-color', u'data-color', u'data-primary', u'data-send-to', u'data-turbo', u'disabled', u'formaction'], u'div': [u'data-agreement-company', u'data-agreement-link', u'data-author', u'data-avatar-url', u'data-block', u'data-color', u'data-description', u'data-expanded', u'data-height', u'data-icon', u'data-item-view', u'data-layout', u'data-network', u'data-send-to', u'data-stick', u'data-subtitle', u'data-thumb', u'data-thumb-position', u'data-thumb-ratio', u'data-title', u'data-type', u'data-url', u'data-value', u'data-view', u'itemscope', u'itemtype'], u'figure': [u'data-platform-desktop', u'data-platform-mobile', u'data-turbo-ad-id'], u'form': [u'action', u'data-agreement-company', u'data-agreement-link', u'data-send-to', u'data-type', u'method', u'name', u'placeholder', u'type'], u'iframe': [u'allowfullscreen', u'frameborder', u'hd', u'height', u'referrerpolicy', u'sandbox', u'src', u'width'], u'img': [u'src'], u'meta': [u'content', u'itemprop'], u'source': [u'data-duration', u'data-title', u'src', u'type'], u'table': [u'data-invisible'], u'video': [u'height', u'width']})¶ Sanitizes HTML, removing not allowed tags and attributes.
Parameters: - html (str|unicode) –
- allowed_tags (list) – List of allowed tags.
- allowed_attrs (dict) – Dictionary with attributes allowed for tags.
Return type: unicode