Python 在Flask中使用语法高亮显示标记
我试图在Python中实现相同的堆栈溢出文本区域,并使用语法高亮显示,我已经完成了这一步,但我无法让它工作 app.pyPython 在Flask中使用语法高亮显示标记,python,flask,Python,Flask,我试图在Python中实现相同的堆栈溢出文本区域,并使用语法高亮显示,我已经完成了这一步,但我无法让它工作 app.py from flask import Flask, render_template, request import preview app = Flask(__name__) @app.route('/',methods=['GET','POST']) def index(): if request.method == 'POST': markdow
from flask import Flask, render_template, request
import preview
app = Flask(__name__)
@app.route('/',methods=['GET','POST'])
def index():
if request.method == 'POST':
markdown_content = request.args.get['wdd-input']
post_preview = preview.markdown(markdown_content['data'])
return render_template('test.html', result=post_preview)
if request.method == 'GET':
return render_template('demo.html')
if __name__ == '__main__':
app.run()
预览是一种基于Pygments的语法高亮显示和显示功能
test.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>PageDown Demo Page</title>
<link rel="stylesheet" type="text/css" href="/static/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="/static/css/highlighting.css">
<link rel="stylesheet" type="text/css" href="/static/css/demo.css" />
<script type="text/javascript" src="/static/js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="/static/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/static/js/hycus-textarea.js"></script>
<script type="text/javascript" src="/static/js/Markdown.Editor.js"></script>
<script type="text/javascript">
(function (m) {
m(document).ready(function () {
m('textarea.wmd-input').TextAreaResizer();
});
})(jQuery);
</script>
</head>
<body>
<div class="container">
<div id="pagedwon">
<div id="tabnav">
<ul class="nav nav-tabs" id="markdown_tab" style="padding: 0 10px; margin-bottom: 10px;">
<li class="active"><a href="#edit" data-toggle="tab">Edit</a></li>
<li><a href="#markdownpreview" data-toggle="tab">Preview</a></li>
</ul>
</div>
<div class="tab-content">
<div class="tab-pane active" id="edit">
<div class="wmd-panel">
<div id="wmd-button-bar"></div>
<textarea class="wmd-input" id="wmd-input" rows="10" name="text-input">
This is the *pagedown* editor.
------------------------------
**Note**: Just plain **Markdown**, except that the input is sanitized: **HTML** is not allowed.
</textarea>
</div>
<script type="text/javascript">
(function () {
var pagedown_editor = new Markdown.Editor();
pagedown_editor.run();
})();
</script>
<script type="text/javascript">
(function (m) {
m("#markdown_tab a").click(function () {
if (m(this).html() == "Preview"){
var markdown_content = m("#wmd-input").val();
if (!markdown_content) {
m("div#markdownpreview").html("Empty Markdown Content.");
} else {
content_to_preview = {
"data": markdown_content
}
m.post("/", content_to_preview)
.success( function(preview_content){
if (preview_content == 'None'){
m("div#markdownpreview").html("No content received.");
} else {
m("div#markdownpreview").html(preview_content);
}
})
.error( function () {
m("div#markdownpreview").html("Sorry, error occurred. Please retry.");
});
}
}
});
})(jQuery);
</script>
</div>
<div class="tab-pane markdown-body" id="markdownpreview">
Loding preview content ...
</div>
</div>
</div>
</div>
</body>
</html>
如何让它工作,请帮助。我不熟悉烧瓶。- 首先,用于查询字符串参数,但您通过
发送数据。你应该改用POST
- 第二,是一个函数,不支持协议(这是导致错误的原因)李>
- 第三,正如@Doobeh在评论中指出的,您在
键下发送数据,但您试图通过“wdd input”键访问数据,这将导致错误data
- 最后,从中提取的值将是一个字符串(不支持字符串作为值),并且您不需要它,因为您已经拥有了整个字符串李>
帖子
部分的重新处理版本:
if request.method == 'POST':
markdown_content = request.form.get('data', 'No content yet ...')
post_preview = preview.markdown(markdown_content)
return render_template('test.html', result=post_preview)
试着在调试模式打开的情况下运行程序,这会给你一个比你收到的500服务器错误消息更深刻的错误消息。将
app.run()
更改为app.run(debug=True)
以激活调试控制台。然后让我们知道您将获得stacktrace中显示的信息。不,dint获得错误。浏览器中显示了什么?浏览器显示编辑器,单击预览选项卡时,抱歉,发生了错误。请重试。好的,所以错误不是来自浏览器,而是来自您正在运行的Javascript,它调用一个视图,失败,并显示该消息。我认为这是因为您只将数据
发布到视图中,而视图正在查找wdd输入
,当该输入不存在时,调用preview失败,生成错误,js随后显示该消息
if request.method == 'POST':
markdown_content = request.form.get('data', 'No content yet ...')
post_preview = preview.markdown(markdown_content)
return render_template('test.html', result=post_preview)