无法通过 Flask 请求获取用户浏览器

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

我尝试在请求时获取浏览器名称,但收到 “您的浏览器没有!”

app = Flask(__name__)

@app.route('/')
def index():
    user_agent = request.user_agent.browser
    return 'Your browser is {}!'.format(user_agent)

但是如果我提出请求:

    user_agent = request.user_agent

我得到 “您的浏览器是 Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如 Gecko)Chrome/104.0.0.0 Safari/537.36!” 浏览器名称和版本位于字符串中,但为什么我不能使用以下方式获取它:

request.user_agent.browser

python flask request user-agent
2个回答
1
投票

我想你刚刚回答了你自己的问题。如果

request.user_agent
返回字符串而不是对象,则
request.user_agent.browser
不存在。因此它不会返回任何内容。

如果您因为想使用移动浏览器了解天气而尝试获取用户代理,那么也许您应该使用一些正则表达式来检查字符串中的关键字,例如“Mobile”。这是我正在编写的一些代码的示例,它正是这样做的:

@app.route("/")
@app.route("/home")
def home():
    browser = request.user_agent
    browser = re.search("Mobile", str(browser))

    if browser != None:
        return render_template("mobile-index.html") 
    else:
        return render_template("index.html")

如果用户代理有其他用途,那么也许您应该找到该特定问题的解决方案。但该解决方案可能需要正则表达式来解析该字符串。


0
投票

我也无法将其写入数据库“vsearchlogDB”的表“log”中的字段“browser_string”任何内容,插入操作后的值为Null。 但通过另一种方式获取浏览器名称:

user_agent_parser.Parse(request.user_agent.string)['user_agent']['family']

我在我的博客

详细描述了我的“折磨”
© www.soinside.com 2019 - 2024. All rights reserved.