我用Django构建了一个包含一定数量视图的应用程序。我必须从一个项目切换到另一个使用相同视图的项目。
为此,我使用了一个上下文处理器,它返回在一个字典中发生变化的变量。然后在我的所有观看中,我返回context_instance=RequestContext(request)
我的问题是,在我再次点击“更改项目”按钮后,我的视图才会重新加载。
我不知道我是否足够清楚,但是如果有人能给我一个关于这里错误的提示,那就太棒了。 我甚至不知道哪一段代码有助于理解这个问题,所以如果您认为可以提供帮助,请询问!
修改
我的context_processor
的示例from django.shortcuts import render_to_response
from django.core.context_processors import csrf
from django.template import RequestContext
def display_select_proj(request):
if request.method == "POST" and (request.POST.get("action", "") == "OK"):
form = SelectForm(request.POST, proj_id=request.session['proj'])
if form.is_valid():
p = form.save()
request.session['proj'] = proj
return {'my_variables': my_variables}
答案 0 :(得分:2)
上下文处理器不适合这种逻辑,特别是会话修改。您应该将其移至middleware或查看功能。
为什么你的方法不起作用:上下文处理器只修改正在渲染的模板的上下文,并在你的视图函数之后应用。 See "When context processors are applied"。