填完表格后我得到: 1
我在qaru和reddit看到了很多解决问题的方法,但我没有找到解决方法
这是我的档案:
网络应用程序.py
from flask import Flask, render_template, send_file, make_response
from forms import AAForm
from create_plot import ploter
import os
app = Flask(__name__)
SECRET_KEY = os.urandom(32)
app.config['SECRET_KEY'] = SECRET_KEY
@app.route('/', methods=['GET', 'POST'])
def index():
form = AAForm()
if form.validate_on_submit():
bytes_obj = ploter(form.uniprot_ids.data, form.the_dye.data)
return send_file(bytes_obj,
attachment_filename='plot.png',
mimetype='image/png')
return render_template('index.html', form=form)
if __name__ == '__main__':
app.run(debug=True)
表单.py
from flask_wtf import FlaskForm
from wtforms import StringField, SelectField, SubmitField
from wtforms.validators import DataRequired
from dyes_list import dyes
class AAForm(FlaskForm):
uniprot_ids = StringField('Uniprot id', validators=[DataRequired()])
the_dye = SelectField('Краситель', choices=dyes, validators=[DataRequired()])
submit = SubmitField('Паехалиии!')
染料_列表.py
dyes = [
(['K', 'R', 'H'], 'Кумасси бриллиантовый синий'),
(['N', 'Q', 'C'], 'Окрашивание серебром'),
(['K', 'R', 'H'], 'Амидо черный'),
(['K', 'R', 'H'], 'Бромфеноловый синий'),
(['K'], 'Пирогаллоловый красный'),
(['K', 'R', 'H'], 'Sypro Ruby'),
(['W'], 'Stain-free'),
(['H', 'C', 'Q', 'N'], 'Zn-имидазольное негативное окрашивание'),
]
和索引.html
<h1>Введите данные</h1>
<form action="" method="post">
{{ form.hidden_tag() }}
<p>
{{ form.uniprot_ids.label }}<br>
{{ form.uniprot_ids(size=32) }}<br>
{% for error in form.uniprot_ids.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</p>
<p>
{{ form.the_dye.label }}<br>
{{ form.the_dye(size=1) }}<br>
{% for error in form.the_dye.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</p>
<p>{{ form.submit() }}</p>
{% block content %}{% endblock %}
</form>
p.s.:这很奇怪,但是如果您将键和值反转到“染料”中,所有这些都会很好地工作(至少您不会遇到这个问题)。你知道吗
这些值是从browser as strings返回的,它不会对字符串数组进行验证。你知道吗
取而代之的是将值作为CSV字符串,然后在表单验证后拆分为一个数组。你知道吗
相关问题 更多 >
编程相关推荐