首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将烧瓶预览中的元素集成到注释中

如何将烧瓶预览中的元素集成到注释中
EN

Stack Overflow用户
提问于 2022-05-08 05:26:24
回答 1查看 112关注 0票数 0

在我的requirements.txt中,我有:烧瓶2.0.3,Flask_Pagedown 0.4.0,Jinja2 -wtf 1.0.1,Jinja2 3.0.3 WTForms 3.0.0,等等。第一段代码是预览文本的视图,我从https://github.com/miguelgrinberg/Flask-PageDown/blob/main/example/app.py#L20中找到了它,而第二段代码是与quill编辑器很好地工作的注释。

为了在提交评论之前获得预览,我应该找到一种方法,将它们作为一个视图集成到我的flask_app.py中,并在.py和.html中包含其他元素。在单独的模板中运行时,代码和脚本都运行良好。

第一个代码:从miguelgrinberg的视图瓶页向下工作代码

代码语言:javascript
运行
复制
@app.route('/', methods=['GET', 'POST'])
def index():
    form = PageDownFormExample()
    text = None
    text2 = None
    if form.validate_on_submit():
        text = form.pagedown.data
        text2 = form.pagedown2.data
    else:
        form.pagedown.data = ('# This is demo #1 of Flask-PageDown\n'
                              '**Markdown** is rendered on the fly in the '
                              '<i>preview area below</i>!')
        form.pagedown2.data = ('# This is demo #2 of Flask-PageDown\nThe '
                               '*preview* is rendered separately from the '
                               '*input*, and in this case it is located above.')
    return render_template('index.html', form=form, text=text, text2=text2)

成第二代码:查看注释工作代码

代码语言:javascript
运行
复制
@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == "GET":
        return render_template("main_page.html", comments=Comment.query.all())
    if not current_user.is_authenticated:
        return redirect(url_for('index'))
    comment = Comment(content=request.form["contents"], commenter=current_user)
    db.session.add(comment)
    db.session.commit()
    return redirect(url_for('index'))

到目前为止,我尝试的是将第一个实例放在方法"GET“之后,如下所示:

代码语言:javascript
运行
复制
@app.route("/", methods=["GET", "POST"])
def index():
    if request.method == "GET":
        return render_template("main_page.html", comments=Comment.query.all())        
        form = PageDownFormExample()
        text = None
        text2 = None
        if form.validate_on_submit():
            text = form.pagedown.data
            text2 = form.pagedown2.data
        else:
            form.pagedown.data = ('# This is demo #1 of Flask-PageDown\n'
                '**Markdown** is rendered on the fly in the '
                '<i>preview area below</i>!')
            form.pagedown2.data = ('# This is demo #2 of Flask-PageDown\nThe'
                '<i>preview area below</i>!'
                '*input*, and in this case it is located above.')
        return render_template('preview.html', form=form, text=text, text2=text2)
    if not current_user.is_authenticated:
        return redirect(url_for('index'))
    comment = Comment(content=request.form["contents"], commenter=current_user)
    db.session.add(comment)
    db.session.commit()
    return redirect(url_for('index'))

以上实验的html错误如下:

代码语言:javascript
运行
复制
            <div>
                <h1>Flask-Preview Page</h1>
                {% if text or text2 %}
                <div>
                    <p>Received text was:</p>
                    <pre>{{ text }}</pre>
                    <pre>{{ text2 }}</pre>
                </div>
                <hr>
                {% endif %}
                <div style="width: 800px;">
                    <form method="POST">
                        {{ form.hidden_tag() }} <!-- ---------------- error from here-->
                        <div>
                            <b>{{ form1.pagedown.label }}</b>:
                            {{ form.pagedown(rows=10, style='width:100%') }}
                        </div>
                        <br>
                        <div>
                            {{ form.pagedown2(only_preview=True) }}
                            <br>
                            <b>{{ form.pagedown2.label }}</b>:
                            {{ form.pagedown2(only_input=True, rows=10, style='width:100%') }}
                        </div>
                        <div>{{ form.submit() }}</div> <!-- ------------ error up to here------------- -->
                    </form>
                </div>
            </div>
            <div class="row">
                <form action="." method="POST">
                    <div>
                        <label for="contents">Content</label>
                        <input type="hidden" name="contents" value="<?= html_escape($contents) ?>">
                        <div id="editor" style="min-height: 160px;"><?= $contents ?>
                    </div>
                    <div>
    <button type="submit" name="draft" class="btn btn-success">Post Comment Enable</button>
    </div>
                </form>
<script src="https://cdn.quilljs.com/1.3.7/quill.js"></script>
</script>
            </div>

错误启动从{ form.hidden_tag() }}到{ form.submit() }}.当我删除这些错误代码和‘中间’时,没有错误,但是它只在quill编辑器的顶部出现“form.submit-预览页”而没有预览。当jinja2.exceptions.UndefinedError:没有取出这些代码时,错误日志是: 'form'

有什么帮助吗?

EN

回答 1

Stack Overflow用户

发布于 2022-05-09 13:27:47

如果第四个代码块中的HTML来自main_page.html,那么错误的出现是因为您从不让form对象被定义。在第三个python代码块中,如果方法是GET,则在实例化表单对象之前返回一个呈现的main_page.html。如果方法是POST,则只执行来自if not current_user.is_authenticated: on的代码。

也许尝试一下这样的方法,看看是否更好:

代码语言:javascript
运行
复制
@app.route("/", methods=["GET", "POST"])
def index():
    form = PageDownFormExample()
    if request.method == "GET":
        return render_template("main_page.html", comments=Comment.query.all(), form=form)        
    text = None
    text2 = None
    if form.validate_on_submit():
        text = form.pagedown.data
        text2 = form.pagedown2.data
    else:
        form.pagedown.data = ('# This is demo #1 of Flask-PageDown\n'
            '**Markdown** is rendered on the fly in the '
            '<i>preview area below</i>!')
        form.pagedown2.data = ('# This is demo #2 of Flask-PageDown\nThe'
            '<i>preview area below</i>!'
            '*input*, and in this case it is located above.')
    return render_template('preview.html', form=form, text=text, text2=text2)
    if not current_user.is_authenticated:
        return redirect(url_for('index'))
    comment = Comment(content=request.form["contents"], commenter=current_user)
    db.session.add(comment)
    db.session.commit()
    return redirect(url_for('index'))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72158327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档