我在设置中为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',
]),
},
}
答案 0 :(得分:0)
我假设您所说的HTML文件是Django模板。
看来你实际上并没有使用你在表单中定义的textarea。因此,未使用自定义data-config
属性。
如果您有权访问模板中的表单,则应使用{{ form.text_area_content }}
呈现您定义的字段。
答案 1 :(得分:0)
如果我了解您要实现的目标,文档中提到您可以在RichTextField
中引用自定义CKEditor设置,或者例如在使用CKEditorWidget
时< / p>
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>