Загрузить поле выбора с помощью Flask Python - PullRequest
0 голосов
/ 16 февраля 2019

Итак, я пытаюсь загрузить SelectField на веб-страницу.Сбой Flask при подключении на локальном хосте с помощью браузера.С этим сообщением: "* PIN-код отладчика: 320-071-095"

from flask import Flask, render_template, request
from flask_wtf import FlaskForm
from wtforms import SelectField, RadioField

from main import mut_infos, year_infos

app = Flask(__name__)
app.config['SECRET_KEY'] = "BoomVroom"



class SelYear(FlaskForm):
    years = SelectField(u'year', choices= list(year_infos.keys()),coerce=int)

@app.route('/')
def index():
    form = SelYear()
    return render_template("index.html", form=form)

years_infos - это словарь, принимающий целое число в качестве ключа.

Это index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Flask WebApp</title>
</head>
<body>
    <form method="POST" action="{{ url_for('index') }}">
        {{ form.csrf_token }}
        {{ form.years }}
    </form>

</body>
</html>

edit: На терминале

 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 320-071-095

На веб-странице просто сказано, что он не может найти сервер "Хмм. У нас проблемы с поискомсайт. "

1 Ответ

0 голосов
/ 17 февраля 2019

Я думаю, вы должны по-новому взглянуть на свой список выбора.Как можно найти в документе, SelectField ожидает список кортежей: https://wtforms.readthedocs.io/en/stable/fields.html

choices = [('cpp', 'C ++'), ('py', 'Python'), ('text',' Обычный текст ')]

То, что вы можете сделать, выглядит примерно так:

def choicelist():
    choices = []
    for c in choices # refer to your list of years here
        choices.append((str(c), c)) 

    return choices

и укажите ваш выбор = список (year_infos.keys ()) на эту функцию списка выбора.

...