我在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(...
您将需要修改您的网址。他们应该看起来像这样:
结果,messages
模块完全执行了我想做的事情。使用它,我可以保存每个请求的消息,并在使用该消息的下一个视图中显示它们。