Пользовательский обработчик ссылок не отображается в PageLinkChooser
Я следую документации Wagtail docs для создания пользовательского обработчика ссылок:
myapp.handlers.py
from django.contrib.auth import get_user_model
from wagtail.core.rich_text import LinkHandler
class UserLinkHandler(LinkHandler):
identifier = 'user'
@staticmethod
def get_model():
return get_user_model()
@classmethod
def get_instance(cls, attrs):
model = cls.get_model()
return model.objects.get(username=attrs['username'])
@classmethod
def expand_db_attributes(cls, attrs):
user = cls.get_instance(attrs)
return '<a href="mailto:%s">' % user.email
my_app/wagtail_hooks.py
from wagtail.core import hooks
from my_app.handlers import MyCustomLinkHandler
@hooks.register('register_rich_text_features')
def register_link_handler(features):
features.register_link_type(LinkHandler)
Однако обработчик не отображается в виджете администратора. Ожидаемое поведение - он должен быть в опции в панели типов ссылок:
Я точно следовал документации, есть ли что-то упущенное?
Это не является частью функциональности register_link_type. Обработчик типа ссылки только определяет соответствие между представлением ссылки в базе данных и конечным HTML-выводом - он не обеспечивает никакой поддержки пользовательского интерфейса для фактической вставки этих ссылок. Как отмечается в документации по ссылке:
В данном примере предполагается, что была добавлена эквивалентная внешняя функциональность, позволяющая пользователям вставлять эти виды ссылок в свой текстовый редактор.
Для этого вам нужно обратиться к https://docs.wagtail.org/en/stable/extending/extending_draftail.html.
