web2py: где я должен хранить личные файлы, относящиеся к приложениям? - PullRequest
4 голосов
/ 23 октября 2010

Я только начал работать над web2py. Лично мне легче учиться, чем Джанго.

Мой запрос заключается в том, что мне нужно загрузить файл при запуске приложения. Это маринованная хэш-таблица. Где я должен хранить этот файл, чтобы система могла его увидеть

Мой код:

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. Где я должен положить его в папку приложения.

Кроме того, я хочу, чтобы переменная таблиц была доступна для всех функций в контроллере. Является ли session.tables правильным способом? Это просто приложение для поиска, поэтому нет входа пользователя. Таблица должна быть загружена только один раз для всех пользователей, получающих доступ к странице. Спасибо.

1 Ответ

4 голосов
/ 24 октября 2010

Я думаю, что папка private будет хорошим местом для этого.Вы можете получить абсолютный путь с помощью:

import os
fp = os.path.join(request.folder,'private','tables.pkl')    

Я бы использовал кеш вместо сессии, если файл не уникален для пользователя.

...