我编写了一个在终端中工作的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)
答案 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
该文件并按上述方式使用它们。