我正在使用会话变量来检查用户是以承包商还是雇主
登录当承包商:
request.session['LoggedAsContractor'] = True
当雇主:
request.session['LoggedAsContractor'] = False
然后我实现了两种切换方法,toContractor& toEmployer,只是更改会话变量。
从HTML视图中,当我单击切换按钮时,变量不会更改而其他任何内容都不会更改,但是当我刷新页面时,变量会发生变化,而其他所有内容都会发生变化。
在localhost上运行项目时不会发生此错误,只有在部署项目时才会发生此错误(Gondor)。
这是我的会话类型:
INSTALLED_APPS = (
'django.contrib.sessions',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
)
更新
这是 toContractor 方法,按开关
按钮调用def switchToContractor(request, user_name):
request.session['LoggedAsContractor'] = True
if "employer" in request.GET['next']:
if str(request.user) == user_name:
return redirect('/contractor/' + user_name + '/')
else:
return redirect(request.GET['next'])
else:
return redirect(request.GET['next'])
request.session ['LoggedAsContractor'] = True 和 request.session ['LoggedAsContractor'] = False 之间的区别是HTML中的视图。< / p>
HTML代码:
{% if request.session.LoggedAsContractor %}
<!-- Show some buttons -->
{% else %}
<!-- Show other buttons -->
{% endif %}
更新2
这是包含“切换”按钮的HTML代码:
{% if request.session.LoggedAsContractor %}
<a href="/contractor/{{request.user}}/switch/?next={{request.path}}">Switch to Employer View</a>
{% else %}
<a href="/employer/{{request.user}}/switch/?next={{request.path}}">Switch to Contractor View</a>
{% endif %}
网址 / contractor / username / switch / 重定向到方法 switchToEmployer 。
网址 / employer / username / switch / 重定向到方法 switchToContractor 。
答案 0 :(得分:2)
您应该使用更新的会话呈现响应,而不是重定向。例如:
def my_example(request):
request.session['key'] = True
response = render_to_response("example.html", context_instance = RequestContext( request ), mimetype = "text/html" )
return response
答案 1 :(得分:0)
任何请求都需要响应才能向用户显示内容,这不是错误。你能添加按钮功能吗?