Basic Flask:添加有用的功能

时间:2015-06-05 23:49:11

标签: python flask

我编写了一个在终端中工作的python脚本,并使用Flask将其移植到Web上。我已经阅读了教程的一部分(特别是:http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world

我正在努力将我在Python脚本中使用的所有函数放在哪里。 author()使用此代码作为基本视图:

def index():
    user = {'nickname': 'Miguel'}  # fake user
    posts = [  # fake array of posts
        { 
            'author': {'nickname': 'John'}, 
            'body': 'Beautiful day in Portland!' 
        },
        { 
            'author': {'nickname': 'Susan'}, 
            'body': 'The Avengers movie was so cool!' 
        }
    ]
    return render_template("index.html",
                           title='Home',
                           user=user,
                           posts=posts)

问题是我没有一个函数可以调用。我有15个左右,看起来Flask只允许我为每个视图调用一个函数。所以我不确定在哪里放置我的“主”函数将调用的所有辅助函数。

以作者的示例代码为例。如果我有一个函数getPosts()返回一个post对象数组,我会把它放在哪里?

即使我被允许把它置于路线的主要功能之下(我认为不允许这样做),但这样做似乎是一个糟糕的组织。

编辑:

这是我的views.py文件:

  1 from flask import Flask
  2 app = Flask(__name__)
  3 from flask import render_template
  4 from app import app
  5 from app import helpfulFunctions
  6
  7 def testFunction():
  8     return 5;
  9
 10 @app.route('/')
 11 @app.route('/index')
 12 def index():
 13     #allPlayers = processGender(mainURL, menTeams)
 14     myNum = testFunction()
 15     return render_template('index.html', title = 'Home', user = user)

1 个答案:

答案 0 :(得分:4)

每个视图不限于一个功能 - 您可以拥有任意数量的功能。

from flask import Flask
app = Flask(__name__)

def f():
    ...
def g():
    ...
@app.route('/index')
def index():
    <here you can use f and g>
    ...

函数不需要与视图对应 - 只有@app.route(...)装饰器才能这样做。

如果你有很多其他功能,将它们放在另一个文件中也不会有什么坏处。然后您可以import该文件并按上述方式使用它们。