django-ckeditor отображает полный виджет вместо моего пользовательского виджета

Я определяю некоторые пользовательские виджеты в моих настройках для пользователя ckeditor. На одной странице я пытаюсь использовать этот пользовательский шаблон, и он не показывает мне пользовательский виджет, он отображается с полным виджетом.

В этом случае я использую одну форму, полученную из запроса AJAX.

Моя модель:

class Comment(models.Model):
    content = models.CharField(max_length=settings.COMMENT_TEXT_LIMIT if hasattr(settings, "COMMENT_TEXT_LIMIT") else 10000)

Моя форма:

class CreateCommentForm(IdeiaForm):
    content = forms.CharField(
    max_length=settings.COMMENT_TEXT_LIMIT if hasattr(settings,     "COMMENT_TEXT_LIMIT") else 10000,
    required=True,
    widget=forms.Textarea(attrs={'data-config': json_encode(getattr(settings, 'CKEDITOR_CONFIGS', None)['comment'])}))

и мой HTML-файл:

<textarea id="text_area_content" name="content" class="form-control" placeholder="Deixe seu comentário" data-url-login="{% url 'account:is_logged' %}" data-trigger="login" data-token="{{ csrf_token }}"></textarea>

Мои settings.py:

CKEDITOR_CONFIGS = {
    'default': {
        'toolbar': 'Basic',
    },
    'comment': {
        'toolbar': 'Custom',
        'toolbar_Custom': [
            ['Bold', 'Italic'],
            ['CodeSnippet'],
        ],
        'entities': False,
        'extraPlugins': ','.join([
            'autolink', 'dialog',
            'codesnippet','autogrow','placeholder',
    ]),
},

}

2 ответа

Если я понимаю, чего вы пытаетесь достичь, в документации упоминается, что вы можете ссылаться на свои пользовательские настройки CKEditor либо в RichTextField или, например, при использовании CKEditorWidget:

from ckeditor.widgets import CKEditorWidget


class CreateCommentForm(IdeiaForm):
    content = forms.CharField(
        max_length=getattr(settings, "COMMENT_TEXT_LIMIT", 10000),
        required=True,widget=CKEditorWidget(config_name='comment')
    )

Затем вы должны убедиться, что вы визуализируете форму с использованием шаблонных тегов (как в ответе @jaap3), обновив пример документа и предполагая, что вы передаете форму представлению как form = CreateCommentForm():

<form>
    {{ form.media }}
    {{ form.as_p }}
    <input type="submit"/>
</form>

Я предполагаю, что HTML-файл, о котором вы говорите, является шаблоном Django.

Кажется, вы на самом деле не используете текстовую область, которую вы определили в форме. Так что обычай data-config атрибут не используется.

Если у вас есть доступ к форме в шаблоне, вы должны использовать {{ form.text_area_content }} сделать поле, которое вы определили.

Другие вопросы по тегам