我的文本编辑器生成额外的括号,如何摆脱它

时间:2018-06-15 14:33:30

标签: javascript django quill

我需要设置一个文本编辑器,以便更好地在我的项目中发布功能(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

1 个答案:

答案 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访问其他格式化文本。