我正在使用会话变量来检查用户是作为承包商还是雇主登录
当承包商:
request.session['LoggedAsContractor'] = True
当雇主:
request.session['LoggedAsContractor'] = False
然后我实现了两个切换方法,toContractor 和 toEmployer,它们只是改变了会话变量。
从 HTML 视图中,当我单击切换按钮时,变量没有改变,其他也没有改变,但是当我刷新页面时,变量和其他一切都改变了。
在本地主机上运行项目时不会发生此错误,仅在部署项目时发生(Gondor)。
这是我的会话类型:
INSTALLED_APPS = (
'django.contrib.sessions',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
)
更新
这是由按钮Switch调用的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 中的视图。
HTML 代码:
{% if request.session.LoggedAsContractor %}
<!-- Show some buttons -->
{% else %}
<!-- Show other buttons -->
{% endif %}
更新 2
这是包含 Switch 按钮的 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 %}
url /contractor/username/switch/重定向到方法switchToEmployer。
url /employer/username/switch/重定向到方法switchToContractor。