【问题标题】:flask with wtforms: tinymce not replacing textarea form带有 wtforms 的烧瓶:tinymce 不替换 textarea 表单
【发布时间】:2023-04-07 01:54:01
【问题描述】:

我正在尝试让 TinyMCE 以烧瓶中 wtforms 生成的形式替换 textarea。 在此处遵循官方快速入门和本文:https://www.kevin7.net/post_detail/2,但仍然没有被替换。

我已经尝试过云安装和本地安装..

HTML:

{% extends "base.html" %}
{% block content %}
    <script src="https://cdn.tiny.cloud/1/removedkey/tinymce/5/tinymce.min.js" referrerpolicy="origin"></script>
    <!-- <script src="{{ url_for('static', filename='tinymce/tinymce.min.js') }}"></script> -->
    <script>
        tinymce.init({
        selector: '#clientinfo',
        height: 500,
        menubar: false,
        plugins: [
            'advlist lists charmap print preview hr anchor pagebreak spellchecker',
            'searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime nonbreaking',
            'save table contextmenu directionality template paste textcolor codesample'
        ],
        toolbar: 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link | print preview media fullpage | forecolor backcolor | codesample',
        codesample_languages: [
            {text: 'HTML/XML', value: 'markup'},
            {text: 'JavaScript', value: 'javascript'},
            {text: 'CSS', value: 'css'},
            {text: 'Processing', value: 'processing'},
            {text: 'Python', value: 'python'}
        content_css: [
          '//fonts.googleapis.com/css?family=Lato:300,300i,400,400i',
          '//www.tiny.cloud/css/codepen.min.css'
        ]
        });
    </script>
    <h1>Hi, {{ current_user.name }}!</h1>
        <form action="" method="post">
            {{ form.hidden_tag() }}
                <p>
                    {{ form.clientname.label }}<br>
                    {{ form.clientname(cols=32, rows=4) }}<br>
                    {% for error in form.clientname.errors %}
                    <span style="color: red;">[{{ error }}]</span>
                    {% endfor %}
                </p>
                <p>
                    {{ form.clientss.label }}<br>
                    {{ form.clientss(cols=32, rows=4) }}<br>
                </p>
                <p>
                    {{ form.clientemail.label }}<br>
                    {{ form.clientemail(cols=32, rows=4) }}<br>
                    {% for error in form.clientemail.errors %}
                    <span style="color: red;">[{{ error }}]</span>
                    {% endfor %}
                </p>
                <p>
                    {{ form.clientphone.label }}<br>
                    {{ form.clientphone(cols=32, rows=4) }}<br>
                    {% for error in form.clientphone.errors %}
                    <span style="color: red;">[{{ error }}]</span>
                    {% endfor %}
                </p>
                <p>
                    {{ form.clientaddress.label }}<br>
                    {{ form.clientaddress(cols=32, rows=4) }}<br>
                </p>
                <p>
                    {{ form.clientzip.label }}<br>
                    {{ form.clientzip(cols=32, rows=4) }}<br>
                </p>
                <p>
                    {{ form.clientcity.label }}<br>
                    {{ form.clientcity(cols=32, rows=4) }}<br>
                </p>
                <p>
                    {{ form.clientinfo.label }}<br>
                    {{ form.clientinfo(cols=32, rows=4) }}<br>
                </p>
                <p>
                    {{ form.submit() }}  {{ form.cancel() }}
                </p>
        </form>
{% endblock %}

textarea 的 id 是#clientinfo,是自动生成的。

这是flask中的表单代码:

class PostForm(FlaskForm):
    clientname = StringField('Name', validators=[Optional()])
    clientss = StringField('Social Security number', validators=[Optional()])
    clientemail = StringField('Email', validators=[Optional()])
    clientphone = StringField('Phone', validators=[Optional()])
    clientaddress = StringField('Address', validators=[Optional()])
    clientzip = StringField('ZIP', validators=[Optional()])
    clientcity = StringField('City', validators=[Optional()])
    clientinfo = TextAreaField('Info',
                               validators=[Optional(), Length(max=2048)])
    submit = SubmitField('Submit')
    cancel = SubmitField('Cancel')

这是路线:

@app.route('/addpost', methods=['GET', 'POST'])
@login_required
def addpost():
    form = PostForm()
    if form.validate_on_submit():
        if form.submit.data:
            post = Post(clientname=form.clientname.data,
                        clientss=form.clientss.data,
                        clientemail=form.clientemail.data,
                        clientphone=form.clientphone.data,
                        clientaddress=form.clientaddress.data,
                        clientzip=form.clientzip.data,
                        clientcity=form.clientcity.data,
                        clientinfo=form.clientinfo.data,
                        author=current_user)
            db.session.add(post)
            db.session.commit()
            flash('Client data successfully added!')
            return redirect(url_for('addpost'))
        else:
            return redirect(url_for('index'))
    return render_template('addpost.html', title='Add Post', form=form)

【问题讨论】:

  • 对此有何想法?

标签: python-3.x flask tinymce jinja2 flask-wtforms


【解决方案1】:

好像我忘了在codesample_languages 数组中添加右括号(添加了],):

    <script src="https://cdn.tiny.cloud/1/prov7b5xue6vf2iwpm6zycj0cae50umuzim111ex6vu4042f/tinymce/5/tinymce.min.js" referrerpolicy="origin"></script>
    <!-- <script src="{{ url_for('static', filename='tinymce/tinymce.min.js') }}"></script> -->
    <script>
        tinymce.init({
        selector: '#clientinfo',
        height: 500,
        menubar: false,
        plugins: [
            'advlist lists charmap print preview hr anchor pagebreak spellchecker',
            'searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime nonbreaking',
            'save table contextmenu directionality template paste textcolor codesample'
        ],
        toolbar: 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link | print preview media fullpage | forecolor backcolor | codesample',
        codesample_languages: [
            {text: 'HTML/XML', value: 'markup'},
            {text: 'JavaScript', value: 'javascript'},
            {text: 'CSS', value: 'css'},
            {text: 'Processing', value: 'processing'},
            {text: 'Python', value: 'python'}
            ],
        content_css: [
          '//fonts.googleapis.com/css?family=Lato:300,300i,400,400i',
          '//www.tiny.cloud/css/codepen.min.css'
        ]
        });

【讨论】:

    猜你喜欢
    • 2012-07-07
    • 1970-01-01
    • 2013-03-16
    • 2020-07-24
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多