• en
  • Language: ru
  • 3.7.x
  • Documentation version: 3.9

Ссылки 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) – Приложение для установки крючка на этой странице, должно быть действительным apphook

  • apphook_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 or VISIBILITY_USERS or VISIBILITY_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.

Параметры
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

список классов меню: пример: _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 (обычно это представление добавления в админке модели).

get_menus(page, language, **kwargs)

Добавлено в версии 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-адресов