Загрузка данных на основе пользовательских вводов

#python #flask

#python #flask

Вопрос:

Я работаю с динамическими данными, для загрузки которых требуется идентификатор и год, оба из которых вводятся пользователем. Идентификатор уникален, поэтому два пользователя, скорее всего, будут просматривать разные данные. Они передаются в URL, который возвращает большой словарь. Затем этот словарь передается множеству других функций для различных анализов и визуальных эффектов. Я думал о том, чтобы отобразить данные в своем собственном скрытом маршруте и вызвать к нему другие маршруты (я новичок в flask, поэтому может быть лучший / более эффективный способ хранения и доступа к динамическим данным, подобным этому).

Вот код flask для отображения формы и где я пытаюсь получить доступ к данным:

 @app.route("/")
def home():
        return render_template("index.html")

@app.route("/data/<lid>/<ssn>", methods=["GET","POST"])
def data_league():
    if request.method == "POST":
        league_id = request.form["lid"]
        season = request.form["ssn"]
        
        url = 'http://fantasy.espn.com/apis/v3/games/ffl/seasons/'   season   '/segments/0/leagues/'   league_id   '?view=mMatchupScoreamp;view=mTeamamp;view=mSettings'
        r = requests.get(url,
                         params={'view':'mMatchup'})
        d = r.json()
        
        return d
 

И HTML-код, который создает форму:

     <form class="row row-cols-lg-auto g-3 align-items-center" action="#" method="post" style="margin- 
     left: 180px;">
      <div class="col-5">
        <label class="visually-hidden" for="league_id">Username</label>
        <div class="input-group">
          <input type="text" class="form-control" name="lid" id="lId" placeholder="League ID">
        </div>
      </div>
      <div class="col-5">
        <label class="visually-hidden" for="season">Preference</label>
        <select class="form-select" name="ssn" id="Ssn">
          <option selected>Select a Season</option>
          <option value="1">2020</option>
          <option value="2">2019</option>
          <option value="3">2018</option>
        </select>
      </div>
      <div class="col-12">
        <button type="submit" class="btn btn-primary">Submit</button>
      </div>
    </form>
 

Когда я запускаю приложение и ввожу идентификатор и год, я получаю сообщение TypeError о том, что «data_league() получил неожиданный аргумент ключевого слова ‘lid'». Что я делаю не так?

Комментарии:

1. def data_league(lid, ssn): затем удалите lid=request.form[«…»] после flask.palletsprojects.com/en/1.1.x/quickstart/#variable-rules

2. Я сделал это и получил сообщение об ошибке «TypeError: функция просмотра не вернула действительный ответ. Функция либо вернула None, либо завершилась без оператора return «. Я думал, что мне нужно обернуть переменную «d» в json.dumps (d) и вернуть ее, но она выдала мне ту же ошибку. Я также попытался отобразить оригинал «index.html » шаблон и добавление «d = d» после, но это тоже не сработало.

3. Поскольку if request.method == "POST": значение равно false, то ничего не возвращается. Добавьте оператор return, если запрос не POST .