python - Django - 除非刷新页面,否则 session 变量不会更改

标签 python django session session-variables

我正在使用 session 变量来检查用户是否以承包商雇主身份登录

当承包商:

request.session['LoggedAsContractor'] = True

当雇主:

request.session['LoggedAsContractor'] = False

然后我实现了两个切换方法,toContractor 和 toEmployer,它们只是更改 session 变量。

从 HTML View 中,当我单击切换按钮时,变量不会更改,并且其他任何内容都不会更改,但是当我刷新页面时,变量会发生更改以及其他所有内容。

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

这就是我的 session 类型:

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'] = Truerequest.session['LoggedAsContractor'] = False 之间的区别在于 HTML 中的 View 。

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

最佳答案

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

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

关于python - Django - 除非刷新页面,否则 session 变量不会更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11776523/

相关文章:

python - 计算列表列表中 2 个变量同时出现的次数

python - aws codebuild 是否仍然支持 python2.7 运行时?

python - Python在破坏Tkinter窗口时崩溃

django - 有什么方法可以在 Wagtail 管理员的列表页面上显示字段吗?

python - Ubuntu 导入错误 : Could not import settings (works on Mac)

c# - 我应该使用 session 吗?

python - 如何转换数据框以便列值是行值

python - 从与外键相关的模型中获取数据

PHP Session 只存储一个值

php - 如何使用 CodeIgniter 3.x 将 session 数据传递到 CKFinder?