redirect()未传递参数以查看Django

问题描述 投票:0回答:2

我在Django视图中无法使用redirect()

我有两个定义如下的视图:

# view for managing a user's account
@login_required
@require_http_methods(['GET'])
def view_account(request, updated=False):
    context = {
        'user': request.user,
        'cart_items': ShoppingCartItem.objects.filter(user_key=request.user),
        'updated': updated,
    }
    print("DEBUG: view_account: %s" % updated)    # debug
    return render(request, 'registration/view_account.html', context)

# view for updating information about a user's account
@login_required
@require_http_methods(['GET', 'POST'])
def update_account_info(request):
    if request.method == 'POST':
        # if this is a POST, user has submitted updated information
        form = UpdateUserInfoForm(request.POST, instance=request.user)
        if form.is_valid():
            # if valid, redirect to view_account
            form.save()
            # return render(request, 'registration/view_account.html', context)
            return redirect('/view_account', updated=True)

这些功能的我的网址看起来像这样:

path('view_account', views.view_account, name='view_account'),
path('update_account', views.update_account_info, name='update_account'),

[在第二个函数中,我试图将用户重定向到view_account()视图,并传递updated=True参数以在页面上通知用户其信息已更新。由于某种原因,运行此命令时,它似乎没有更改updated的默认值。

您可以看到,view_account()视图中有一个调试语句。输出如下:

[04/Nov/2019 16:51:33] "POST /update_account HTTP/1.1" 302 0
DEBUG: view_account: False
[04/Nov/2019 16:51:33] "GET /view_account HTTP/1.1" 200 1247

不确定我在做什么错。有人可以发现我的代码有趣的地方和/或将我的方向指向吗?

谢谢!另外,如果这不是一个格式正确的问题,我深表歉意。

我在Django视图中无法使用redirect()。我有两个定义如下的视图:#用于管理用户帐户的视图@login_required @require_http_methods(['GET'])def view_account(...

python django python-3.x django-views
2个回答
0
投票

您将需要修改您的网址。他们应该看起来像这样:


0
投票

结果,messages模块完全执行了我想做的事情。使用它,我可以保存每个请求的消息,并在使用该消息的下一个视图中显示它们。

© www.soinside.com 2019 - 2024. All rights reserved.