Django modulelevel cach公司

2024-05-20 15:01:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在模块级变量中存储一个值,以便以后检索。 此函数在使用GET方法调用时引发以下错误:local variable 'ICS_CACHE' referenced before assignment

我做错什么了?在

ICS_CACHE = None
def ical_feed(request):
    if request.method == "POST":
        response = HttpResponse(request.POST['file_contents'], content_type='text/calendar')
        response['Content-Disposition'] = 'attachment; filename=%s' % request.POST['file_name']
        ICS_CACHE = response
        return response
    elif request.method == "GET":
        return ICS_CACHE

    raise Http404

我构建了一个基本的例子,看看一个函数是否可以读取模块常量,并且它运行得很好:

^{pr2}$

Tags: 模块方法函数cachegetreturnresponserequest
1条回答
网友
1楼 · 发布于 2024-05-20 15:01:55

添加

global ISC_CACHE

作为你功能的第一行。在函数体内部为其赋值,因此python假设它是一个局部变量。但是,作为一个局部变量,如果不先赋值就不能返回它。在

global语句让解析器知道变量来自函数作用域之外,因此可以返回其值。在

作为对您发布的第二个示例的响应,您所拥有的内容显示了当您不尝试分配给全局变量时,解析器是如何处理全局变量的。在

这可能会使问题更加清楚:

^{pr2}$

相关问题 更多 >