Flask模板显示property对象而非用户名值的问题求助
return (<H2> Hi {{name}} </h2> ... ``` 结果页面并没有显示预期的用户名,而是输出了: ``` Hi <property object at 0x7fb37dfe6958> ``` ## 解决方法 出现这个问题是因为`cas.username`在这里返回的是一个属性对象(property object),而非实际的用户名字符串。这里有两种可靠的解决方式: ### 方式1:从Flask Session中直接获取(推荐) Flask-CAS完成认证后,会把用户名存入Flask的`session`对象中,对应的键是`CAS_USERNAME`。你可以直接从session中取出这个值: 修改`__init__.py`中的代码,记得先导入`session`: ```python from flask import Flask, session # 新增session导入 from flask_cas import CAS from flask_cas import login_required # ... APP = Flask(__name__) cas = CAS(APP) # ... def list_page(): # 从session获取用户名,加默认值避免未登录时出错 username = session.get('CAS_USERNAME', '匿名用户') return render_template("list.html", name=username) @app.route('/admin/') @login_required def admin_page(): return list_page() ``` ### 方式2:调用属性方法(适配部分版本) 如果你的Flask-CAS版本中,`cas.username`是一个可调用的方法,你可以尝试通过调用它来获取用户名: ```python def list_page(): return render_template("list.html", name=cas.username()) ``` 不过更推荐方式1,因为session中的值是CAS认证后明确写入的,不会受版本差异影响。修改完成后,再访问页面就能正常显示用户名了! 内容的提问来源于stack exchange,提问作者Md Monjur Ul Hasan)
相关产品推荐
相关产品推荐

