2017-02-20 48 views
0

我正在尝试使用烧瓶来构建博客。 SimpleMDE被用作文章编辑器(下面的html代码)。我想将减价内容保存到本地文件中,并由flask-misaka在jinja2中渲染。
在SimpleMDE中,我可以通过simplemde.value()获得原始降价内容。但是当我通过simplemde.value()在JavaScript中的var。 “\ n”缺少传球。我认为它可能在JavaScript中有一些“魔术”工具。 html代码返回2警告消息,第一条消息包含换行符,第二条消息不包含换行符。
有人可以给我一些关于这个问题的点击吗?在simplemde中保存降价内容

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>Editor</title> 
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css"> 
    <link rel='stylesheet' href='.{{ url_for("static", filename="css/simplemde.min.css") }}'> 
    <script src='.{{ url_for("static", filename="js/simplemde.min.js") }}'></script> 
    </head> 
    <script type='text/javascript'> 
    function check() { 
     var raw = simplemde.value(); 
     alert(raw); 
     document.testform.markdown_raw.value=raw; 
     alert(document.testform.markdown_raw.value); 
    } 
    </script> 
    <body> 
    <form method='post' class='form' role='form' name='testform'> 
     <div class="form-group " style="padding-top:10px"> 
     <input class="form-control" id="post_title" name="post_title" type="text" value="Title?"> 
     </div> 
     <div class="form-group"> 
     <input class="form-control" id="markdown" name="post_content" type="textarea" value=""> 
     </div> 
     <div class="form-group" style='display:none'> 
     <input class="form-control" id="markdown_raw" name="markdown_raw" type="textarea" value="Origin"> 
     </div> 
     <div> 
     <input class='btn btn-default' onclick="check();" id='submit' name='submit' type='submit' value='Save'> 
     <input class='btn btn-default' id='publish' name='publish' type='submit' value='Publish'> 
     </div> 
    </form> 
    <script type='text/javascript'> 
     var simplemde = new SimpleMDE({ element: document.getElementById('markdown') }); 
    </script> 
    </body> 
</html> 

回答

1

如果你想获得原材料降价,只是使用simplemde.value()

当您将原始降价放入正常textarea时,它会变成纯文本。

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Editor</title> 
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css"> 
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/simplemde/latest/simplemde.min.css"> 
    <script src="https://cdn.jsdelivr.net/simplemde/latest/simplemde.min.js"></script> 
</head> 
<body> 
<form method='post' class='form' role='form' name='testform'> 
    <div class="form-group " style="padding-top:10px"> 
     <input class="form-control" id="post_title" name="post_title" type="text" value="Title?"> 
    </div> 
    <div class="form-group"> 
     <textarea class="form-control" id="markdown" name="post_content"></textarea> 
    </div> 
    <div> 
     <input class='btn btn-default' onclick="" id='submit' name='submit' type='submit' value='Save'> 
     <input class='btn btn-default' id='publish' name='publish' type='submit' value='Publish'> 
    </div> 
</form> 
<script type='text/javascript'> 
     var simplemde = new SimpleMDE({ element: document.getElementById('markdown') }); 
</script> 
</body> 
</html> 

获取内容:

from flask import Flask, render_template, request 

app = Flask(__name__) 


@app.route('/', methods=['GET', 'POST']) 
def test(): 
    if request.method == 'POST': 
     raw_md = request.form['post_content'] 
    return render_template('index.html') 


if __name__ == '__main__': 
    app.run(debug=True) 
+0

我会试试看。谢谢。但是我把值传递给'markdown_raw'类型的是'textarea'。 – l0o0

+0

我知道,这就是缺少换行的原因。 –

+0

正如你所提到的。我需要将标签更改为普通的'textares',我如何才能在flask中获得simplemde.value()? – l0o0