editor.md的实现烧瓶和烧瓶wtf的降价编辑器。

flask_editormd的Python项目详细描述


Implementation of editor.md the markdown editor for Flask and Flask-WTF.

description

It’s combined the https://github.com/pandao/editor.md version 1.5.0 .

usage

from flask_editormd import Editormd
editormd = Editormd()
editormd.init_app(app)

the editormd object is auto inject to the jinja2 template.

Editor

{% extends "bootstrap/base.html" %}
{% import "bootstrap/wtf.html" as wtf %}

{% block content -%}

<form method="POST">
    {{ form.hidden_tag() }}

    {{ form.body() }}

    {{ wtf.form_field(form.submit) }}
</form>

{%- endblock content %}


{% block scripts %}
{{ super() }}

{{ editormd.add_editormd_resource(autoLoadModules=False) }}
{{ editormd.add_editormd(autoHeight=True, autoLoadModules=False)}}

{%- endblock scripts %}
from flask import Flask, render_template
from flask_wtf import FlaskForm
from flask_editormd import Editormd
from flask_bootstrap import Bootstrap
from flask_editormd.fields import EditormdField
from wtforms.fields import SubmitField

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
editormd = Editormd(app)
Bootstrap(app)

class EditormdForm(FlaskForm):
    body = EditormdField()
    submit = SubmitField('Submit')

@app.route('/', methods=['GET', 'POST'])
def index():
    form = EditormdForm()
    if form.validate_on_submit():
        text = form.body.data
        print(text)

    return render_template('index.html', form=form)

Preview

{% extends "bootstrap/base.html" %}

{% block content -%}

{{ editormd.add_editormd_previewer(content) }}


{%- endblock content %}


{% block scripts %}
{{ super() }}
{{ editormd.add_editormd_previewer_resource() }}

{%- endblock scripts %}
from flask import Flask, render_template
from flask_editormd import Editormd
from flask_bootstrap import Bootstrap

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
editormd = Editormd(app)
Bootstrap(app)

@app.route('/preview', methods=['GET', 'POST'])
def preview():
    content = """
    ###科学公式 TeX(KaTeX)

$$E=mc^2$$

行内的公式$$E=mc^2$$行内的公式,行内的$$E=mc^2$$公式。

$$\(\sqrt{3x-1}+(1+x)^2\)$$

$$\sin(\alpha)^{\theta}=\sum_{i=0}^{n}(x^i + \cos(f))$$

$$X^2 > Y$$

#####上标和下标

上标:X&lt;sup&gt;2&lt;/sup&gt;

下标:O&lt;sub&gt;2&lt;/sub&gt;
"""
    return render_template('preview.html', content=content)

API

可以配置flask下这些配置,默认都为 True ,即启用cdn资源。

  • CODEMIRROR_CSS_CDN
  • CODEMIRROR_JS_CDN
  • MARKED_JS_CDN
  • PRETTIFY_JS_CDN

add_editormd和add_editormd_resource

针对editormd的某个编辑器的配置接口,editormd文档描述的那些参数都可以传递过去:

{{ editormd.add_editormd_resource(autoLoadModules=False) }}

{{ editormd.add_editormd(toolbarIcons=["undo", "redo", "|", "bold", "del", "italic","quote", "|", "list-ul", "list-ol", "hr", "|", "link","reference-link","image","|","code-block", "table","html-entities","|", "goto-line", "watch", "unwatch","preview","fullscreen", "help"], autoHeight=True, appendMarkdown="\n\n\n\n\n",autoLoadModules=False, autoLoadPlugins=True) }}
  • autoLoadModules 默认 True 自动加载本地editormd的模块,如果设置为False,那么记得 add_editormd_resource 也要设置 autoLoadModules=False 好加载额外需要的本地模块资源,
  • autoLoadPlugins 默认为 False,你可能并不需要加载插件资源,比如editormd的simple模式,如果需要加载插件那么将其设置为 True

add_editormd_previewer 和 add_editormd_previewer_resource

针对editormd的markdown文件预览接口,具体使用很简单,除了 add_editormd_previewer 将markdown content 传递进去即可,并不其他参数。

可以在jinja2上执行多次 add_editormd_previewer 添加多个文章预览。

{{ editormd.add_editormd_previewer(post.body) }}

{{ editormd.add_editormd_previewer_resource() }}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带有接口参数的java反射和构造函数   java Spring Thymeleaf如何通过Thymeleaf表单编辑(更新)用户选择的实体(对象)?   Java Tapestry中不同类之间的静态、非静态和调用   java如何使用dojo 1.9显示地理地图   安卓如何在java中简化这个代码片段?   尝试将java spring应用程序部署到Oracle weblogic群集java时出错。lang.ArrayIndexOutofBounds异常:52304   java如何在标头中包含SOAP身份验证详细信息?   java使用流删除一个列表中的元素(如果存在于另一个列表中)   java如何将包含UTC时间的字符串(如“193526”(19:35:26)转换为本地时区?   java部署Grailsgenerated WAR文件的最简单方法是什么?   java使用两种类型向通用列表添加对象   java如何在安卓应用程序中保存应用程序数据?   java有人能帮我弄清楚如何从“:”(不包括)读取我的文件直到行尾吗?   java在org上找不到javadoc。日食团队svn anywhere