我在django中有两个视图:一个用于加载页面,另一个用于保存表单。我已将两者分开,因此我可以保持在同一页面上而不会刷新页面导致重新提交。
保存表单的创建视图会重定向回使用maximumSize
加载页面的视图。
在加载页面视图中,是否可以获取创建视图是否使用重定向调用视图?
所以:
HttpResponseRedirect
然后保存表单的视图:
def holiday(request, value=None, year=None, month=None):
if request.method == "GET":
# set some variables for the view
year = something
month = something_else
else:
# get if the view was executed from a redirect
# set year and month to be something2 and something_else2
# calendar
holidayform = HolidayForm(request.POST or None, request.FILES or None)
context = {
"holidayform": holidayform,
"calendar": mark_safe(cal),
"year": year,
"month": month,
}
return render(request, "tande/calendar.html", context)
答案 0 :(得分:2)
HttpResponseRedirect
将逐字地重定向用户。基本上,就好像用户在浏览器中输入了URL并按下了回车键。这意味着过去请求中的某些信息无法使用。
https://docs.djangoproject.com/en/1.10/ref/request-response/#httpresponse-subclasses
您可以通过GET参数传递标志。它可以做到这一点:
HttpResponseRedirect(reverse("tande:holiday") + '?redirect=True')
然后在form_view
中阅读GET参数:
if request.GET.get('redirect', None):
do_something()
如果用户故意将该GET参数添加到URL,您只需要考虑会发生什么。他可以假装结果。如果您的意图是显示消息,那么它就不会成为问题。