0

嗨,我的视图文件中有一个函数,我需要在我的头文件中使用它,这对所有模板都是通用的,

@app.route('/admin/')   
def adminhome():
    row1 =''
    try:
        db = connect_db()
        rows=g.db.query("SELECT * FROM `auth_user` order by id DESC ")
        rows1 = list(rows)
        data=''
        if len(rows1) > 0:
            users = rows1
        #close_db(db)
    except Exception as e:
        users = e   

    return render_template('admin/index.html',users=users)

但这个功能只适用于

@app.route('/admin/')

我如何为所有网址注册此功能

4

2 回答 2

1

试试 app.context_processor:http ://flask.pocoo.org/docs/templating/#context-processors

例子:

def adminhome():
    row1 =''
    try:
        db = connect_db()
        rows=g.db.query("SELECT * FROM `auth_user` order by id DESC ")
        rows1 = list(rows)
        data=''
        if len(rows1) > 0:
            users = rows1
        #close_db(db)
    except Exception as e:
        users = e
    return users

@app.context_processor
def inject():
    return dict(adminhome=adminhome)

有了这个 adminhome 在您的所有模板中都可用,它返回“用户”,您可以按照您想要的方式呈现“用户”。

希望能帮助到你..

于 2013-07-19T07:25:13.563 回答
0

你必须使这个函数成为一个装饰器,然后在你的其他视图函数中使用它。例如,这是我解决这个问题的一部分(不完美!这只是一个片段):

def login_required(func):
    @wraps(func)
    def wrapped():
        if "username" in session:
            return func()
        else:
            return redirect(url_for('startpage'))
    return wrapped


 @app.route('/admin/')   
 @login_required
 def adminhome():
       return render_template('admin/index.html',users=users)


@app.route("/hello_world")
@login_required
def hello():
     return "hello world"

请注意,这不是一对一的现成示例。我只是给你一个使用它的模式,你必须自己弄清楚,我建议你从阅读Flask 文档的相关部分开始

于 2013-07-19T07:24:19.153 回答