web2py: 我应该将私密的应用特定文件存储在哪里?
我刚开始学习web2py。个人觉得它比Django更容易上手。
我有个问题,就是我需要在应用启动时加载一个文件。这个文件是一个经过处理的哈希表。我应该把这个文件放在哪里,系统才能找到它呢?
我的代码是:
import cPickle as pickle
def index():
"""
Load the file into memory and message the number of entries
"""
f = open('tables.pkl','rb')
session.tables = pickle.load(f)
f.close()
terms = len(session.tables.keys())
message = 'The total entries in table = ' + str(terms)
return dict(message=message)
如你所见,我把代码放在index()里,以便在启动时加载。目前我使用的是'tables.pkl'文件的绝对路径。那我应该把它放在应用文件夹的哪个位置呢?
另外,我想让tables这个变量在控制器的所有函数中都能使用。使用session.tables这样做合适吗?因为这是一个搜索应用,所以没有用户登录的功能。这个表只需要为所有访问页面的用户加载一次。
谢谢!
1 个回答
4
我觉得把这个放在private文件夹里比较合适。你可以用下面的代码获取绝对路径:
import os
fp = os.path.join(request.folder,'private','tables.pkl')
如果这个文件对每个用户来说不是独一无二的,我建议用缓存来代替会话。