我需要设置一个文本编辑器,以便更好地在我的项目中发布功能(Django 2.0),我正在使用quilljs。这是有效的,但随着帖子附上了一些错误。
此处代码
<form action="" method="post">
{% csrf_token %}
<input name="description" type="hidden">
<div id="editor-container">
</div>
<input class="ui button" type="submit" value="Post" />
</form>
Javascript
var quill = new Quill("#editor-container", {
modules: {
toolbar: [
['bold', 'italic'],
['link', 'blockquote', 'code-block', 'image'],
[{
list: 'ordered'
}, {
list: 'bullet'
}]
]
},
placeholder: 'Compose an epic...',
theme: 'snow'
});
var form = document.querySelector('form');
form.onsubmit = function() {
// Populate hidden form on submit
var about = document.querySelector('input[name=description]');
about.value = JSON.stringify(quill.getContents());
console.log("Submitted", $(form).serialize(), $(form).serializeArray());
};
发帖后,结果就像那样
{“ops”:[{“insert”:“一个已经发展了感知的机器人,并且是唯一一个在地球上仍然可以运作的机器人。\ n”}}}
如何摆脱这种额外的支撑。 TIA
答案 0 :(得分:0)
首先,你得到的结果
{&#34; ops&#34;:[{&#34; insert&#34;:&#34;一个已经发展了感知的机器人,并且是唯一一个显示仍在地球上运作的机器人。\ n&#34;}]}
不是错误。 Quill的getContents()函数以 JSON 格式返回编辑器中的文本(这就是那些大括号的原因)。此外,您将字符串化JSON以获取字符串。
查看Quill的这个游乐场页面,了解返回的数据格式:link
如果您只想删除那些大括号并获取输入文本,您可以在onsubmit方法本身的客户端获取它,也可以在django的视图中在服务器端获取表单数据。
<强> 1。 JS中的客户端:
form.onsubmit = function() {
// Populate hidden form on submit
var about = document.querySelector('input[name=description]');
//get JSON from quill editor
var jsonData = quill.getContents();
//access "insert" data from the JSON
about.value = jsonData.ops[0].insert;
console.log("Submitted", $(form).serialize(), $(form).serializeArray());
};
<强> 2。 Python中的服务器端:
import json
...
#get JSON String from the request and parse it to python JSON dictionary
jsonData = json.loads(req.body.description)
#access "insert" data from the JSON
inputText = jsonData["ops"][0]["insert"]
...
注意:这仅用于从Quill获取纯文本数据(如果存在)。您也可以从JSON访问其他格式化文本。