【问题标题】:Unexpected return from JSON lookup when using request.form.get使用 request.form.get 时 JSON 查找的意外返回
【发布时间】:2021-08-21 02:50:52
【问题描述】:

我发现了一些与我类似的问题,但我无法解决这个问题。

我正在尝试通过 Google Books API 执行搜索,但无法获取用户键入的内容。

<form action="/search">
  <input type="text" id="search" name="seek" placeholder="Search you book..." />
  <button type="submit">Search</button>
</form>

提交后我调用def search 并尝试获取用户使用request.form.get("seek") 键入的内容。我这样做如下:

import requests
from flask import Flask, render_template, redirect, request, session

@app.route('/search')
@login_required
def search():
    """Look up search for books."""
    seek = request.form.get("seek")
    try:
        url = f'https://www.googleapis.com/books/v1/volumes?q={seek}'
        response = requests.get(url)
        response.raise_for_status()
    except requests.RequestException:
        return None
    # Parse response
    try:
        search = response.json()
        return render_template("search.html", search={
            "totalItems": int(search["totalItems"]),
            "items": search["items"]
        })
    except (KeyError, TypeError, ValueError):
        return None

终端向我返回以下行:

DEBUG: Starting new HTTPS connection (1): www.googleapis.com:443
DEBUG: https://www.googleapis.com:443 "GET /books/v1/volumes?q=None HTTP/1.1" 200 None

在 HTML 中,我只是这样调用它来显示它:

<p>{{ search['totalItems'] }}</p>
<p>{{ search['items'] }}</p>

【问题讨论】:

  • 表单中需要method="post"
  • 真可惜!我忘记了。非常感谢。

标签: python flask request google-books-api


【解决方案1】:

我相信这就是你所需要的:

@app.route('/search', methods=["GET", "POST"])
@login_required
def search():
    """Look up search for books."""
    if request.method == "POST":
        try:
            seek = request.form.get("seek")
            ...
        ...
    ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多