Вы можете проверить количество аргументов и вернуть форму HTML, если длина равна 0, например:
# if there are no arguments provided, show HTML form
if len(request.args) == 0:
return render_template("form.html")
Кроме того, нет необходимости хранить каждый аргумент как отдельную переменную, а затем объединять их в список. request.args
уже является словарем, поэтому вы можете просто получить список имен и значений аргументов с помощью:
list(request.args.keys()) # list of argument names eg. ['psi', 'lavr', 'dsc', 'ifsc'...]
list(request.args.values()) # list of argument values eg. [1, 1, 1, 1...]
Вы можете проверить, соответствуют ли имена аргументов требуемому набору:
if set(argument_names) == {"psi","lavr","dsc","ifsc","ics","eng","ol1","ol2","reso","educ","listen","time","probe","unders"}:
# return JSON
В целом ваш код может выглядеть примерно так:
from flask import Flask, request, render_template
import json
app = Flask(__name__)
@app.route("/sample", methods=["GET", "POST"])
def query_strings():
# if there are no arguments provided, show HTML form
if len(request.args) == 0:
return render_template("form.html")
argument_names = list(request.args.keys())
# if the argument list is valid
if set(argument_names) == {"psi","lavr","dsc","ifsc","ics","eng","ol1","ol2","reso","educ","listen","time","probe","unders"}:
# return JSON
response = app.response_class(
response=json.dumps(request.args),
status=200,
mimetype='application/json'
)
return response
return "Invalid arguments"
if __name__ == '__main__':
app.run(debug = True)
Это будет:
- показать
form.html
если вы загрузите /sample
без аргументов
- показывает аргументы в формате JSON, если вы загружаете
/sample
с допустимыми аргументами (например, /sample?psi=1&lavr=1&dsc=1&ifsc=1&ics=1&eng=3&ol1=1&ol2=1&reso=1&educ=1&listen=1&time=1&probe=1&unders=1
)
- показать "Неверные аргументы" в любом другом случае