Использование WTForms, Flask, CKEditor
У меня есть поле в форме с динамическим количеством записей; их можно как добавлять, так и удалять. Настроить это в WTForms было непросто, и я воспользовался решением, обсуждаемым по этой ссылке. Я плохо знаком с JS, поэтому мне сложно адаптировать эту функцию для создания CKEditorField вместо обычного StringField/.
Приведенный ниже код работает, ничего не работает. «сломан», но RTE не отображается, только обычное текстовое поле. Это заставило меня поверить, что проблема в HTML, а не в файлах Flask, но на всякий случай я включил оба.
Что я пробовал до сих пор:
(1) Маркер StringField в форме ввода заменен на CKEditorField (Forms.py, ниже)
(2) Добавление «class=ckeditor» в возвращаемое текстовое поле и вручную вызывая функции замены CKEditor (хотя в документации говорится, что это включается автоматически) (app.js)
(3) Создание и возврат вызовов CKEditor.config в HTML для каждого вновь сгенерированного поле (в документации предлагается иметь это значение для каждого CKE на странице, а другие места, где я использую CKE ((нединамически создаваемые)) работают с этим на месте) (app.js)(4) Замена возврата вызовом CKEditor.create (я считаю, что здесь, вероятно, и кроется ответ, но он не сработал, и я не могу понять, что еще попробовать ) (app.js/webpage.html)
Также отметим, что другое поле формы — «Планы» — успешно работает с редактором.
Forms.py
class Entry(FlaskForm):
# (1)
# bullet = StringField(validators=[validators.DataRequired()])
bullet = CKEditorField(validators=[validators.DataRequired(), validators.Length(max=1000)])
class MyForm(FlaskForm):
entries = FieldList(FormField(Entry), min_entries=0)
plans = CKEditorField('Plans', [validators.InputRequired(), validators.Length(max=1000)])
app.js
$(document).ready(function() {
// (2)
// These are redundant but not working
CKEDITOR.replaceClass = 'ckeditor';
CKEDITOR.replaceAll( 'ckeditor' );
var addCount = 1;
$("#addNewField").click(function() {
var newInput = $("#entries");
newInput.append(GetDynamicTextBox("", addCount));
$("#entries").append(newInput);
addCount += 1;
listCKE();
});
// (3)
// CKE Documentation says to include a config instruction
// (in the form of) {{ ckeditor.config(name="misc_risks") }}
// This fn is my attempt at returning one of those for each added entry to the HTML
// This doesn't work, just returns raw text printed on the page
function listCKE() {
var items = ``;
for (var i=0; i
Подробнее здесь: https://stackoverflow.com/questions/785 ... form-field
CKEditor не отображается с динамически генерируемым полем формы WTForms ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение