python - 在 Flask 模板中显示属性对象而不是值

标签 python python-3.x templates flask cas

<分区>

在我的 Python (3.5) Flask 项目中,我使用 CAS client用于身份验证,一切正常。身份验证完成后,我想在输出页面中显示用户名。所以我使用下面的代码

__init__.py:

from flask import Flask
from flask_cas import CAS
from flask_cas import login_required
# ...

APP = Flask(__name__)
cas = CAS(APP)
# ...

def list_page()
     return render_template("list.html", name=cas.username)

@app.route('/admin/')
@login_required
def admin_page()
    return list_page();

list.html:

...
<H2> Hi {{name}} </h2>
...

在我看到的输出页面上

Hi <property object at 0x7fb37dfe6958>

最佳答案

如果不知道 __init__.py 中的 cas 变量是什么,就很难准确指出问题所在。但是我怀疑您遇到的错误可能是因为 cas 是一个类,而不是该类的实例。

向您展示我的意思:

>>> class MyCAS:
...    @property
...    def name(self):
...        return 'Monjur'
...
>>> MyCAS.name
<property object at 0x109cf1cc8>
>>> MyCAS().name
'Monjur'

第一种情况,我没有实例化类(没有括号),所以返回值是属性对象。 在第二种情况下(带括号),我看到了实例的实际名称。

如果您的 cas 对象确实应该是从类实例化的对象(例如 flask.ext.cas.CAS),请确保您像这样创建它:

from flask.ext.cas import CAS
cas = CAS() # With parenthesis :)

不是这样的:

from flask.ext.cas import CAS
cas = CAS  # No parenthesis :(

关于python - 在 Flask 模板中显示属性对象而不是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50322377/

相关文章:

Python 3,如何将字符串转换为 "iso-8859-1"以在html中使用

python - 图像的线性组合给我错误

python - 通过 setuptools 或 distutils 安装 Python 包后如何访问可编辑的配置文件?

python - Python中的循环依赖

django - 如何在 Django 2.1 中将多个 slugs 添加到一个 url 路径中?

python-3.x - 尝试通过 Python 发送电子邮件时出现问题

c++ - 动态分配模板类时出现编译器错误,其中类型是模板类型的另一个对象

c++ - 如何获取指向专门针对字符串的模板函数的指针?

php - 在 CodeIgniter (MVC) 中从内容文件设置页面标题

python - 控制轴的标题标签颜色