В моей программе у меня есть запрос GET, отправленный из формы, в представление Flask.
Это форма:
<form method="GET" action="{{url_for('rerouter')}}">
{{ form.hidden_tag() }}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Search</legend>
<div>
{{ form.welder_selector.label(class="form-control-label") }}
{{ form.welder_selector(class="searchable-welder-js",style="width: 28%") }}
{{ form.wps_selector.label(class="form-control-label") }}
{{ form.wps_selector(class="searchable-wps-js",style="width: 27.8%") }}
{{ form.process_selector.label(class="form-control-label") }}
{{ form.process_selector(class="searchable-process-js",style="width: 27.8%") }}
</div>
</fieldset>
<div class="form-group">
{{ form.submit(class='btn btn-outline-success') }}
</div>
</form>
Метод формы, который я установил как GET, и действие также отправляется в представление:
Соответствующий вид:
@app.route("/rerouter", methods=['GET', 'POST'])
def rerouter():
if request.method == 'GET':
value1 = request.args.get('welder_selector')
value2 = request.args.get('wps_selector')
value3 = request.args.get('process_selector')
print("Im at rerouter with : ", value1, value2, value3)
if value1 is not 0 or None:
if value2 is 0 or None:
if value3 is 0 or None:
return redirect(url_for('welderdatabase', welder_id=value1))
else:
return redirect(url_for('home'))
....
Форма HTML сделана здесь в этом представлении:
@app.route("/", methods=['GET', 'POST'])
@app.route("/home", methods=['GET', 'POST'])
def home():
form = TrialSearchMultipleForm()
return render_template('home.html', title='Home', form=form)
Я успешно реализовал программу, используя метод POST, но позже узнал, что правильный способ - использовать GET для отправки данных формы.
Что я поймал в консоли
127.0.0.1 - - [29/Apr/2019 09:10:20] "GET /rerouter?welder_selector=__None&wps_selector=__None&process_selector=__None&submit=Search HTTP/1.1" 302
Im at rerouter with : __None __None __None
Так что я ищу:
- Я не могу понять, почему он возвращает «__Нет». Я хочу понять, почему он возвращает «__None» в запросе GET, а не «None». Я пытался искать ответы выше и выше.
- Программа отправляет данные, но они не перенаправляются на какую-либо страницу, просто перезагружаются при просмотре домашней страницы. Я получаю запрос через консоль, поэтому я знаю, что данные отправляются.
Как мне это решить?
- Я попытался отключить CSRF, чтобы посмотреть, изменится ли __None на None. Там нет успеха.
- Я вроде понимаю, что запрос GET отправляется в виде строки, и, следовательно, это может быть причиной для __None, но как мне обойти это и получить желаемый результат?
Ожидаемый результат:
Я нахожусь на маршруте с: Нет Нет Нет
или же
Я на маршруте с: 1 Нет Нет
(на основании ввода)
И успешное перенаправление на страницу с использованием условий.
Мой код не такой чистый, потому что этот раздел программы постоянно менялся, и мне нужно было все сократить, поэтому, пожалуйста, потерпите меня.
Я буду чрезвычайно благодарен за ЛЮБЫЕ указатели или предложения или полезные советы.