2012-08-02 90 views
0

我使用一个会话变量来检查用户是否登录为承包商雇主Django的 - Session变量不会改变,除非刷新页面

当承包商:

request.session['LoggedAsContractor'] = True 

当雇主:

request.session['LoggedAsContractor'] = False 

然后我实现了两个开关我给承包商&给EMPLOYER,它只是改变会话变量。

从HTML视图中,当我单击切换按钮时,变量不会改变,并且没有其他更改,但是当我刷新页面时,变量会发生更改以及其他一切。

在本地主机上运行项目时不会发生此错误,它只发生在项目部署(Gondor)时。

这是我有会话的类型:

INSTALLED_APPS = (
'django.contrib.sessions', 
) 

MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware', 
) 

UPDATE

这是该方法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'] = Truerequest.session ['LoggedAsContractor'] = False,是HTML中的视图。

的HTML代码:

{% if request.session.LoggedAsContractor %} 
    <!-- Show some buttons --> 
{% else %} 
    <!-- Show other buttons --> 
{% endif %} 

UPDATE 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 %} 

链接/承包商/用户名/ switch/重定向到方法switchToEmployer

url /employer/username/switch/重定向到方法switchToContractor

+0

什么是“开关按钮”?它有什么作用?你确定它正在调用相关函数吗? – 2012-08-02 12:08:38

+0

检查更新。 – mbanayosi 2012-08-02 12:50:24

回答

2

而不是重定向,而应该使用更新的会话呈现响应。例如:

def my_example(request):  
    request.session['key'] = True 
    response = render_to_response("example.html", context_instance = RequestContext(request), mimetype = "text/html") 
    return response 
0

这并非错误,任何请求都需要响应才能向用户显示某些内容。你可以添加你的按钮功能吗?

+0

检查更新。 – mbanayosi 2012-08-02 11:52:46