通过 Flask 使用网络数据

问题描述 投票:0回答:1

我试图创建一个从外部 API 获取数据的程序。

这是我的结构:

主.py

模板

 index.html    

 guess.html 

这里是我的index.html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>My Website</title>
</head>
<body>
    <h1>My Web Site</h1>
</body>
</html>

这是我的guess.html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Guess</title>
</head>
<body>
    <h1>Hey!, {{ person_name }}</h1>
    <h2>I think you are {{ gender }}.</h2>
    <h3>And maybe {{ age }} years old.</h3>
</body>
</html>

这是我的 main.py 代码:

from flask import Flask, url_for, render_template
import request

app = Flask(__name__)

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

@app.route("/guess/<name>")
def guess(name):
    gender_url = f"https://api.genderize.io?name={name}"
    gender_response = request.get(gender_url)
    gender_data = gender_response.json()
    gender = gender_data["gender"]
    age_url = f"https://api.agify.io?name={name}&country_id=US"
    age_response = request.get(age_url)
    age_data = age_response.json()
    age = age_data["age"]
    return render_template("guess.html", name=name, gender=gender, age=age)

if __name__ == "__main__":
    app.run(debug=True)

我尝试了这些,但没有用,我不明白我的错误是什么,所以如果你帮助我,我会很高兴,谢谢你的考虑

python html flask
1个回答
0
投票

您的代码似乎有错字。您导入了

request
模块而不是
requests
,这导致了错误。

试试这个:

from flask import Flask, url_for, render_template
import requests  # corrected import

app = Flask(__name__)

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

@app.route("/guess/<name>")
def guess(name):
    gender_url = f"https://api.genderize.io?name={name}"
    gender_response = requests.get(gender_url)  # corrected call to requests.get()
    gender_data = gender_response.json()
    gender = gender_data["gender"]
    age_url = f"https://api.agify.io?name={name}&country_id=US"
    age_response = requests.get(age_url)  # corrected call to requests.get()
    age_data = age_response.json()
    age = age_data["age"]
    return render_template("guess.html", person_name=name, gender=gender, age=age)  # changed name to person_name

if __name__ == "__main__":
    app.run(debug=True)
© www.soinside.com 2019 - 2024. All rights reserved.