我有一个标准的基于Django类的FormView,在成功调用form_valid时调用了一个重写的get_success_url方法。
这是目前的get_success_url方法:
def get_success_url(self):
"""Redirect to same view for message flashing"""
return reverse(
'manage_property',
kwargs={'slug': self.kwargs['property_slug']}
)
用户将从至少三个不同的视图到达我的表单。我想将它们重新定向到他们从适当的kwargs传递开始的视图。
例如,一个用户可能从这里开始:
url(r'^properties/(?P<property_slug>[-\w]+)/leads/(?P<offer_pk>[\d]+)/$',
"manage_property_lead", name="manage_property_lead"),
到达这里:
url(
r'^properties/(?P<property_slug>[-\w]+)/send-email/$',
SendEmail.as_view(),
name='send_email'
),
但他们也可能从这里开始:
url(r'^properties/(?P<slug>[-\w]+)/offers/(?P<pk>[\d]+)/$',
'manage_property_offer', name='manage_property_offer'),
Django的最佳做法是什么,以确保我有成功提交表单后将其发送回相应视图所需的内容?
谢谢!
答案 0 :(得分:0)
在处理表单的视图中,您可以从request.META['HTTP_REFERER]'
获取引用视图/页面(如果有)的值。
def form_view(request):
redirect_url = request.META.get('HTTP_REFERER', None) or '/'
if form.is_valid():
return HttpResponseRedirect(redirect_url)