django 函数执行后传递请求会话

2guxujil  于 2023-01-06  发布在  Go
关注(0)|答案(1)|浏览(125)

我有应用程序,与身份验证和用户注销时,我希望显示通知消息。我的注销视图看起来像:

def logout_view(request):
    logout(request)
    message = 'Logout successfull'
    request.session['message'] = message
    return redirect('index')

我的索引(我重定向到的那个)视图看起来像这样:

def index(request):
    context = {}
    if request.session:
        message = request.session['message']
        context['message'] = message
    return render(request, 'index.html', context)

我的索引. html:

{{ message }}

现在登录或退出时,我去我的索引视图,我看到的消息。当我点击按钮,使我退出时,我仍然看到消息。我希望用户只能看到消息,如果他们退出。
我不知道这是否可能,如果不可能,那么你可以告诉我另一种方法来传递上下文与重定向功能。
多谢帮忙!

6fe3ivhb

6fe3ivhb1#

向用户显示消息后清除消息。
检查message是否在会话中,如果是,需要显示一条消息。您得到KeyError是因为您在访问它之前没有检查message是否在request.session中。

def index(request):
    context = {}
    if request.session and 'message' in request.session:
        context['message'] = request.session['message']
        del request.session['message']
    return render(request, 'index.html', context)

相关问题