在 HttpResponseRedirect 中包含或不包含我的消息?

Include or not my messages in HttpResponseRedirect?

到目前为止,(1) 和 (2) 在我的 Django 开发环境中产生了相同的结果。但它们真的是等价的吗,或者我最终会在无法提前预测的设置中丢失一些消息?

(1)

return HttpResponseRedirect('/my/home/page', messages.add_message(request, messages.INFO, 'My message here'))

(2)

messages.add_message(request, messages.INFO, 'My message here')
return HttpResponseRedirect('/my/home/page')

这两种方式都有效,因为 messages.add_message() 将消息添加到您的 request.session in-place。但是第一个看起来很奇怪。 add_message return 没有任何有用的东西可以包含在 HttpResponseRedirect 中。所以我相信你应该选择第二个选项:

messages.add_message(request, messages.INFO, 'My message here')
return HttpResponseRedirect('/my/home/page')

或者,使用几个快捷方式,

from django.shortcuts import redirect

messages.info(request, 'My message here')
return redirect('/my/home/page')