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

时间:2015-07-12 13:06:17

标签: python web2py

我的web2py应用程序旨在使用存储在“private”文件夹中的文件中的json密钥。但是,我在访问此文件时遇到问题,因为request.folder返回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')) 

1 个答案:

答案 0 :(得分:1)

对于将处理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"被添加到路径中。