在烧瓶窗体上生成markdown的预览
generate a preview of markdown on flask form
我正在尝试制作一个非常像这个文本框的界面,并在堆栈溢出问题表单上预览它下面的内容。我使用hoep
来处理烧瓶后端的标记。以下是我的页面代码。
烧瓶
@bp.route('/write', methods=['GET', 'POST'])
@login_required
def write():
form = WritePostForm()
if form.validate_on_submit():
extensions = hoep.EXT_FENCED_CODE
html = hoep.render(form.text.data, extensions)
p = Post(
title=form.title.data,
body=html,
author=current_user._get_current_object()
)
db.session.add(p)
db.session.commit()
return redirect(url_for('posts.post', post_id=p.id))
return render_template("post/write.html", form=form)
然而,当我以我的写作形式工作时,我希望生成某种预览,因为hoep会渲染它。
我想到的即时解决方案是就某种$('input').change
事件向服务器发出请求,并返回hoep编译的渲染结果。
问题是,这只是太多的请求,而且速度太慢,因为帖子可能会很长,每次都会费力地浏览。_.debounce
可能会有所帮助,但似乎仍然不是一个优雅的解决方案
如何以有效的方式实现这一点?
出于性能原因,您应该有一个客户端markdown渲染器来生成实时预览。表单提交后,您可以应用服务器端渲染器生成最终的HTML。
StackOverflow使用一个名为PageDown的库作为客户端渲染器。我已经编写了Flask PageDown扩展,它与Flask WTF集成,并为您提供了一个带有预览的新字段类型。
相关文章:
- 防止Iframe窗体在新窗口中打开
- Meteor-将选定窗体中的对象添加到集合中
- 如何在窗体打开时从javascript倒计时计时器值中节省时间
- 主干窗体隐藏字段未呈现
- 如何首先设置样式<td>表中包含在窗体中的元素
- 如何添加CSS&JavaScript进入Windows窗体应用程序C#.net
- 如何将窗体的子元素居中
- 显示嵌套窗体
- 根据输入的数据重定向到页面的窗体
- 有没有针对带有表的JavaScript的Markdown语法解析器
- Markdown模式代码镜像正在创建
- 将文本框中的值用于按钮窗体操作上的变量
- 仅为一个窗体运行应用程序脚本
- 在EXT窗体面板中填充EXT JS存储
- 模型数据未通过窗体传播到控制器ASP.NET MVC4
- WebMethod在ASP.Net Web角色(Web窗体)中不起作用
- 当屏幕键盘出现在手机中时,窗体会隐藏起来
- 如何使键盘在多页的Iphone窗体上消失
- 按钮点击未在弹出窗体中触发
- 在烧瓶窗体上生成markdown的预览