web2py: 我应该将私密的应用特定文件存储在哪里?

4 投票
1 回答
2170 浏览
提问于 2025-04-16 05:58

我刚开始学习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')    

如果这个文件对每个用户来说不是独一无二的,我建议用缓存来代替会话。

撰写回答