我尝试在请求时获取浏览器名称,但收到 “您的浏览器没有!”。
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
我想你刚刚回答了你自己的问题。如果
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")
如果用户代理有其他用途,那么也许您应该找到该特定问题的解决方案。但该解决方案可能需要正则表达式来解析该字符串。
我也无法将其写入数据库“vsearchlogDB”的表“log”中的字段“browser_string”任何内容,插入操作后的值为Null。 但通过另一种方式获取浏览器名称:
user_agent_parser.Parse(request.user_agent.string)['user_agent']['family']
我在我的博客
详细描述了我的“折磨”