Ссылки 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_TEMPLATES
language (str) – Код языка для этой страницы. Должен быть в
LANGUAGES
menu_title (str) – Заголовок меню для этой страницы
slug (str) – Slug для страницы, по умолчанию используется slugified версия title.
apphook (str or
cms.app_base.CMSApp
sub-class) – Приложение для установки крючка на этой странице, должно быть действительным apphookapphook_namespace (str) – Имя пространства имен apphook
redirect (str) – Перенаправление URL
meta_description (str) – Описание этой страницы для SEO
created_by (str of
django.contrib.auth.models.User
instance) – Пользователь, создающий эту страницуparent (
cms.models.Page
instance) – Родительская страница этой страницы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.Site
instance) – Сайт для размещения этой страницыlogin_required (bool) – Должны ли пользователи войти в систему или нет для просмотра этой страницы
limit_visibility_in_menu (
VISIBILITY_ALL
orVISIBILITY_USERS
orVISIBILITY_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) – Код языка для этой страницы. Должен быть в
LANGUAGES
title (str) – Название страницы
page (
cms.models.Page
instance) – Страница, для которой нужно создать этот заголовокmenu_title (str) – Заголовок меню для этой страницы
slug (str) – Slug для страницы, по умолчанию используется slugified версия title.
redirect (str) – Перенаправление URL
meta_description (str) – Описание этой страницы для SEO
parent (
cms.models.Page
instance) – Используется для автоматической генерации слизней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.Placeholder
instance) – Место для добавления плагинаplugin_type (str or
cms.plugin_base.CMSPluginBase
sub-class, must be a valid plugin) – Какой тип плагина добавитьlanguage (str) – Код языка для этого плагина, должен быть в формате
LANGUAGES
position (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.User
instance) – Пользователь, создающий страницу пользователяuser (
django.contrib.auth.models.User
instance) – Пользователь для создания пользователя страницы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.Page
instance) – Страница, на которую нужно назначить пользователяuser (
django.contrib.auth.models.User
instance) – Пользователь, которого нужно назначить на страницуgrant_on (
cms.models.ACCESS_PAGE
,cms.models.ACCESS_CHILDREN
,cms.models.ACCESS_DESCENDANTS
orcms.models.ACCESS_PAGE_AND_DESCENDANTS
) – Контролирует, какие страницы будут затронутыcan_* – Разрешения для предоставления
grant_all (bool) – Предоставить все разрешения пользователю
- cms.api.publish_page(page, user, language)¶
Публикует страницу.
- Параметры
page (
cms.models.Page
instance) – Страница для публикацииuser (
django.contrib.auth.models.User
instance) – Пользователь, выполняющий это действиеlanguage (str) – Целевой язык для публикации
- cms.api.publish_pages(include_unpublished=False, language=None, site=None)¶
Публикует несколько страниц, заданных параметрами.
- Параметры
include_unpublished (bool) – Установите значение
True
, чтобы опубликовать все черновики, включая неопубликованные; в противном случае будут переизданы только уже опубликованные страницыlanguage (str) – Если задано, будут опубликованы только страницы на этом языке; в противном случае будут опубликованы страницы на всех языках
site (
django.contrib.sites.models.Site
instance) – Укажите сайт для публикации страниц только для указанного сайта; если сайт не указан, публикуются страницы со всех сайтов
- get_page_draft(page):
Возвращает черновую версию страницы, независимо от того, является ли переданная страница опубликованной версией или черновой.
- Параметры
page (
cms.models.Page
instance) – Страница для получения черновой версии- обратная страница
черновая версия страницы
- copy_plugins_to_language(page, source_language, target_language, only_empty=True):
Скопируйте плагины на другой язык на той же странице для всех заполнителей страницы.
По умолчанию плагины копируются, только если у placeholder нет плагина для целевого языка; используйте
only_empty=False
, чтобы изменить это.Предупреждение
Эта функция пропускает проверку разрешений
- Параметры
page (
cms.models.Page
instance) – страница для копирования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-адресов