Ссылки API¶
cms.api¶
Python API для создания контента CMS. Это сделано в cms.api, а не на моделях и менеджерах, потому что прямой API через модели и менеджеры немного контринтуитивен для разработчиков. Также функции, определенные в этом модуле, выполняют проверку на вменяемость аргументов.
Предупреждение
Ни одна из функций в этом модуле не выполняет никаких проверок безопасности или разрешений. Они проверяют свои входные значения на вменяемость, где это возможно, однако проверка прав доступа должна быть выполнена вручную перед вызовом любой из этих функций.
Предупреждение
Из-за потенциальных проблем с круговой зависимостью рекомендуется импортировать api в функции, которая использует его функцию.
например, использовать:
def my_function():
from cms.api import api_function
api_function(...)
вместо:
from cms.api import api_function
def my_function():
api_function(...)
Функции и константы¶
-
cms.api.VISIBILITY_ALL¶ Используется для аргумента
limit_visibility_in_menuключевого словаcreate_page(). Не ограничивает видимость меню.
-
cms.api.VISIBILITY_USERS¶ Используется для аргумента
limit_visibility_in_menuк ключевому словуcreate_page(). Ограничивает видимость меню для аутентифицированных пользователей.
-
cms.api.VISIBILITY_ANONYMOUS¶ Используется для аргумента
limit_visibility_in_menuк ключевому словуcreate_page(). Ограничивает видимость меню для анонимных (не прошедших аутентификацию) пользователей.
-
cms.api.create_page(title, template, language, menu_title=None, slug=None, apphook=None, apphook_namespace=None, redirect=None, meta_description=None, created_by='python-api', parent=None, publication_date=None, publication_end_date=None, in_navigation=False, soft_root=False, reverse_id=None, navigation_extenders=None, published=False, site=None, login_required=False, limit_visibility_in_menu=VISIBILITY_ALL, position='last-child', overwrite_url=None, xframe_options=Page.X_FRAME_OPTIONS_INHERIT)¶ Создает экземпляр
cms.models.Pageи возвращает его. Также создает экземплярcms.models.Titleдля указанного языка.- Параметры
title (str) – Название страницы
template (str) – Шаблон, который будет использоваться для этой страницы. Должно быть в
CMS_TEMPLATESlanguage (str) – Код языка для этой страницы. Должен быть в
LANGUAGESmenu_title (str) – Заголовок меню для этой страницы
slug (str) – Slug для страницы, по умолчанию используется slugified версия title.
apphook (str or
cms.app_base.CMSAppsub-class) – Приложение для установки крючка на этой странице, должно быть действительным apphookapphook_namespace (str) – Имя пространства имен apphook
redirect (str) – Перенаправление URL
meta_description (str) – Описание этой страницы для SEO
created_by (str of
django.contrib.auth.models.Userinstance) – Пользователь, создающий эту страницуparent (
cms.models.Pageinstance) – Родительская страница этой страницыpublication_date (datetime.datetime) – Дата публикации этой страницы
publication_end_date (datetime.datetime) – Дата неопубликования этой страницы
in_navigation (bool) – Должна ли эта страница быть в навигации или нет
soft_root (bool) – Является ли эта страница мягким корнем или нет
reverse_id (str) – Обратный идентификатор этой страницы (для тегов шаблона)
navigation_extenders (str) – Меню для прикрепления к этой странице. Должно быть действующее меню
published (bool) – Должна ли эта страница быть опубликована или нет
site (
django.contrib.sites.models.Siteinstance) – Сайт для размещения этой страницыlogin_required (bool) – Должны ли пользователи войти в систему или нет для просмотра этой страницы
limit_visibility_in_menu (
VISIBILITY_ALLorVISIBILITY_USERSorVISIBILITY_ANONYMOUS) – Ограничивает видимость этой страницы в менюposition (str) – Куда вставлять этот узел, если задан parent, должно быть
'first-child'или'last-child'.overwrite_url (str) – Переписанный путь для этой страницы
xframe_options (int) – X Frame Опциональное значение для защиты от Clickjacking
page_title (str) – Переопределенный заголовок страницы для тега HTML title
-
cms.api.create_title(language, title, page, menu_title=None, slug=None, redirect=None, meta_description=None, parent=None, overwrite_url=None)¶ Создает экземпляр
cms.models.Titleи возвращает его.- Параметры
language (str) – Код языка для этой страницы. Должен быть в
LANGUAGEStitle (str) – Название страницы
page (
cms.models.Pageinstance) – Страница, для которой нужно создать этот заголовокmenu_title (str) – Заголовок меню для этой страницы
slug (str) – Slug для страницы, по умолчанию используется slugified версия title.
redirect (str) – Перенаправление URL
meta_description (str) – Описание этой страницы для SEO
parent (
cms.models.Pageinstance) – Используется для автоматической генерации слизнейoverwrite_url (str) – Переписанный путь для этой страницы
page_title (str) – Переопределенный заголовок страницы для тега HTML title
-
cms.api.add_plugin(placeholder, plugin_type, language, position='last-child', target=None, **data)¶ Добавляет плагин к заполнителю и возвращает его.
- Параметры
placeholder (
cms.models.placeholdermodel.Placeholderinstance) – Место для добавления плагинаplugin_type (str or
cms.plugin_base.CMSPluginBasesub-class, must be a valid plugin) – Какой тип плагина добавитьlanguage (str) – Код языка для этого плагина, должен быть в формате
LANGUAGESposition (str) – Позиция для добавления этого плагина в placeholder, должна быть действительной django-treebeard
posзначение дляtreebeard.models.Node.add_sibling()target – Родительский плагин. Должен быть экземпляром плагина
data – Данные для экземпляра типа плагина
-
cms.api.create_page_user(created_by, user, can_add_page=True, can_change_page=True, can_delete_page=True, can_recover_page=True, can_add_pageuser=True, can_change_pageuser=True, can_delete_pageuser=True, can_add_pagepermission=True, can_change_pagepermission=True, can_delete_pagepermission=True, grant_all=False)¶ Создает страницу пользователя для указанного пользователя и возвращает эту страницу пользователя.
- Параметры
created_by (
django.contrib.auth.models.Userinstance) – Пользователь, создающий страницу пользователяuser (
django.contrib.auth.models.Userinstance) – Пользователь для создания пользователя страницыcan_* (bool) – Разрешения, которые необходимо предоставить пользователю
grant_all (bool) – Предоставить все разрешения пользователю
-
cms.api.assign_user_to_page(page, user, grant_on=ACCESS_PAGE_AND_DESCENDANTS, can_add=False, can_change=False, can_delete=False, can_change_advanced_settings=False, can_publish=False, can_change_permissions=False, can_move_page=False, grant_all=False)¶ Назначает пользователя на страницу и предоставляет ему некоторые полномочия. Возвращает созданный объект
cms.models.PagePermission.- Параметры
page (
cms.models.Pageinstance) – Страница, на которую нужно назначить пользователяuser (
django.contrib.auth.models.Userinstance) – Пользователь, которого нужно назначить на страницуgrant_on (
cms.models.ACCESS_PAGE,cms.models.ACCESS_CHILDREN,cms.models.ACCESS_DESCENDANTSorcms.models.ACCESS_PAGE_AND_DESCENDANTS) – Контролирует, какие страницы будут затронутыcan_* – Разрешения для предоставления
grant_all (bool) – Предоставить все разрешения пользователю
-
cms.api.publish_page(page, user, language)¶ Публикует страницу.
- Параметры
page (
cms.models.Pageinstance) – Страница для публикацииuser (
django.contrib.auth.models.Userinstance) – Пользователь, выполняющий это действиеlanguage (str) – Целевой язык для публикации
-
cms.api.publish_pages(include_unpublished=False, language=None, site=None)¶ Публикует несколько страниц, заданных параметрами.
- Параметры
include_unpublished (bool) – Установите значение
True, чтобы опубликовать все черновики, включая неопубликованные; в противном случае будут переизданы только уже опубликованные страницыlanguage (str) – Если задано, будут опубликованы только страницы на этом языке; в противном случае будут опубликованы страницы на всех языках
site (
django.contrib.sites.models.Siteinstance) – Укажите сайт для публикации страниц только для указанного сайта; если сайт не указан, публикуются страницы со всех сайтов
-
get_page_draft(page): Возвращает черновую версию страницы, независимо от того, является ли переданная страница опубликованной версией или черновой.
- Параметры
page (
cms.models.Pageinstance) – Страница для получения черновой версии- обратная страница
черновая версия страницы
-
copy_plugins_to_language(page, source_language, target_language, only_empty=True): Скопируйте плагины на другой язык на той же странице для всех заполнителей страницы.
По умолчанию плагины копируются, только если у placeholder нет плагина для целевого языка; используйте
only_empty=False, чтобы изменить это.Предупреждение
Эта функция пропускает проверку разрешений
- Параметры
page (
cms.models.Pageinstance) – страница для копированияsource_language (str) – Код исходного языка, должен быть в формате
LANGUAGES.target_language (str) – Код исходного языка, должен быть в формате
LANGUAGES.only_empty (bool) – если False, плагин копируется, даже если плагины существуют на целевом языке (на основе placeholder).
- Return int
количество скопированных плагинов
Примеры рабочих процессов¶
Создайте страницу с названием 'My Page, используя шаблон 'my_template.html', и добавьте текстовый плагин с содержанием 'hello world'. Это делается на английском языке:
from cms.api import create_page, add_plugin
page = create_page('My Page', 'my_template.html', 'en')
placeholder = page.placeholders.get(slot='body')
add_plugin(placeholder, 'TextPlugin', 'en', body='hello world')
cms.constants¶
-
cms.constants.TEMPLATE_INHERITANCE_MAGIC¶ Токен, используемый для идентификации, когда пользователь выбирает «inherit» в качестве шаблона для страницы.
-
cms.constants.LEFT¶ Используется в качестве индикатора положения на панели инструментов.
-
cms.constants.RIGHT¶ Используется в качестве индикатора положения на панели инструментов.
-
cms.constants.REFRESH¶ Константа, используемая панелью инструментов.
-
cms.constants.EXPIRE_NOW¶ Константа 0 (ноль), используемая для заголовков управления кэшем
-
cms.constants.MAX_EXPIRATION_TTL¶ Константа 31536000 или 365 дней в секундах, используемая для заголовков управления кэшем
cms.app_base¶
-
class
cms.app_base.CMSApp¶ -
_urls¶ список urlconfs: пример:
_urls = ["myapp.urls"]
список классов меню: пример:
_menus = [MyAppMenu]
-
name = None имя apphook (обязательно)
-
app_name = None имя приложения, это включает поддержку пространств имен Django (необязательно)
-
app_config = None модель конфигурации (опционально)
-
permissions = True если установлено значение true, apphook наследует разрешения от текущей страницы
-
exclude_permissions = [] список имен приложений, которые необходимо исключить из наследования разрешений CMS
-
get_configs()¶ Возвращает все экземпляры конфигурации apphook.
-
get_config(namespace)¶ Возвращает экземпляр конфигурации apphook, связанный с данным пространством имен
-
get_config_add_url()¶ Возвращает url для добавления нового экземпляра конфигурации apphook (обычно это представление добавления в админке модели).
Добавлено в версии 3.3:
CMSApp.get_menusпринимает аргументы page, language и общее ключевое слово: вы можете настроить эту функцию так, чтобы она возвращала различные списки классов меню в соответствии с заданными аргументами.Возвращает меню для экземпляра apphook, выбранные в соответствии с заданными аргументами.
По умолчанию он возвращает меню, назначенные на
_menus.Если страница и язык не указаны, этот метод должен вернуть все меню, используемые этим apphook. Пример:
if page and page.reverse_id == 'page1': return [Menu1] elif page and page.reverse_id == 'page2': return [Menu2] else: return [Menu1, Menu2]
- страница param
страница, к которой привязан apphook
- язык param
текущий язык сайта
- возврат
список классов меню
-
get_urls(page, language, **kwargs)¶ Добавлено в версии 3.3.
Возвращает конфигурации URL для экземпляра apphook, выбранные в соответствии с заданными аргументами.
По умолчанию он возвращает урлы, назначенные на
_urls.Этот метод должен возвращать непустой список конфигураций URL, даже если аргументы не переданы.
- Параметры
page – страница, к которой привязан apphook
language – текущий язык сайта
- Результат
список строк, представляющих конфигурации URL-адресов
-