注册烧瓶中所有网址的功能

时间:2013-07-19 07:11:04

标签: python function url views flask

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

@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( '/管理/')

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

2 个答案:

答案 0 :(得分: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)

使用此管理员可以在所有模板中使用,返回“用户”,您可以按照自己的方式呈现“用户”。

希望有所帮助......

答案 1 :(得分: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"

请注意,这不是一对一的现成示例。我只是给你一个使用它的模式,你必须自己解决,我建议你先阅读relevant portion of documentation of Flask