Python Flask 代码位置的问题 ?

请问为什么第一种写法会挂呢? 那么我想在请求抵达后再处理逻辑不行吗?刚学习不太懂

from flask import Flask, request
import toml


app = Flask(__name__)
print(request.host)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>" + request.host
from flask import Flask, request

app = Flask(__name__)

@app.route("/")
def hello_world():
    print(request.host)
    return "<p>Hello, World!</p>" + request.host
阅读 2.1k
2 个回答

问题在于request对象是对HTTP请求的一个封装,所以这种封装只能是在有HTTP请求场景下才有效。

比如

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>" + request.host

这种@app.route("/")函数内部,才能获取这个请求上下文。也就是这个request对象才存在(或者叫有效).

第一种执行到 print(request.host) 的时候,并没有一个活动的连接。没有活动连接就不能使用 request 。request 是用来读取当前活动连接的相关信息的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题