Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过csrfContext传递变量的帮助_Python_Django_Csrf - Fatal编程技术网

Python 通过csrfContext传递变量的帮助

Python 通过csrfContext传递变量的帮助,python,django,csrf,Python,Django,Csrf,我有一个登录页面,在我看来,我将csrf_标记的csrfContext变量传递给它。然而,当我试图将更多的变量传递到上下文中时,就会出现问题。例如,如果我使用locals() 我得到一个csrf错误。出于某种原因,只有当我显式地传递csrfContext,并且只传递csrfContext时,它才起作用。但是,我还需要传递其他变量。如何将csrfContext和这些变量一起传递?对不起,如果这是一个复杂的问题。我的查看代码是: def index(request): current = M

我有一个登录页面,在我看来,我将csrf_标记的csrfContext变量传递给它。然而,当我试图将更多的变量传递到上下文中时,就会出现问题。例如,如果我使用locals()

我得到一个csrf错误。出于某种原因,只有当我显式地传递csrfContext,并且只传递csrfContext时,它才起作用。但是,我还需要传递其他变量。如何将csrfContext和这些变量一起传递?对不起,如果这是一个复杂的问题。我的查看代码是:

def index(request):
    current = Module.objects.all()
    error = ""
    try:
        error = request.GET["alert"]
        if error == "failure":
            error = "Woops! Something went wrong. Please try again."
        elif error == "invalid":
            error = "Invalid username/password."
        else:
            error = "Unknown Error. Please try again."
    except:
        pass
    csrfContext = RequestContext(request, error, current)
    return render_to_response('base_index.html', csrfContext)

如您所见,我一直在尝试向RequestContext添加变量,但我不知道如何在模板中访问它们。

我不建议以这种方式使用locals()。在更复杂的视图中,最终可能会传递更多所需的模板渲染


一个更好的方法是创建RequestContext,然后传入您想要添加的值,或者在后面添加它们:

我使用了
返回render\u to\u response('base\u index.html',locals(),csrfContext)
,这在发布此消息几秒钟后就成功了。我将return语句修改为:
return render\u to\u response('base\u index.html',locals(),csrfContext)
,一切正常!
def index(request):
    current = Module.objects.all()
    error = ""
    try:
        error = request.GET["alert"]
        if error == "failure":
            error = "Woops! Something went wrong. Please try again."
        elif error == "invalid":
            error = "Invalid username/password."
        else:
            error = "Unknown Error. Please try again."
    except:
        pass
    csrfContext = RequestContext(request, error, current)
    return render_to_response('base_index.html', csrfContext)