在Flask模板

时间:2018-05-14 02:23:00

标签: 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>

1 个答案:

答案 0 :(得分:3)

cas中,如果不知道__init__.py变量是什么,很难准确找出问题所在。但是我怀疑你的错误可能是因为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 :(