我的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'))
答案 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"被添加到路径中。