无法访问 web2py 中的私人文件夹

Trouble accessing private folder in web2py

我的 web2py 应用程序设计为使用存储在我的 'private' 文件夹中的文件中的 json 密钥。但是,我在访问此文件时遇到问题,因为 request.folder returns None.

这段代码对我不起作用:

import os
from gluon.globals import Request


def my_function():    

    request = Request()

    json_file = open(os.path.join('request.folder', 'private', 'quote_generator.json')) 

对于将处理 HTTP 请求的 web2py 应用程序中的代码,您不应创建自己的 Request 对象——web2py 执行环境已经包含一个 Request 对象并使用许多属性,包括 request.folder(当您从头开始创建新的 Request 对象时,它没有 folder 属性)。

如果模块中的函数需要访问 request 对象,您应该将其作为参数显式传递或使用描述的方法 here:

from gluon import current

def my_function():
    json_file = open(os.path.join(current.request.folder,
                                  'private', 'quote_generator.json'))

或者,将 request 作为参数传递:

def my_function(request):
    json_file = open(os.path.join(request.folder,
                                  'private', 'quote_generator.json'))

在这种情况下,当从 web2py 模型、控制器或视图调用上述函数时,您必须传入 request 对象。

最后,请注意,当您调用 os.path.join 时,您不会将 request.folder 放在引号中,因为这会导致将字符串文字 "request.folder" 添加到路径中。