Я пытаюсь заставить TinyMCE заменить текстовую область в форме, генерируемой wtforms в колбе. После официального запуска и этой статьи здесь: 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 %}
Идентификатор для текстовой области: #clientinfo, генерируется автоматически.
Вот код формы в колбе:
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)