如何从表单中获取值,并在一步中重定向到名为MyView
的视图,如MyView/formvalue1/formvalue2
?我有一个解决方案,但我认为这不是正确的方法。
详细说明:
我正在尝试使用Django评级,如教程
中所述urlpatterns = patterns('',
url(r'rate-my-post/(?P<object_id>\d+)/(?P<score>\d+)/', AddRatingFromModel(), {
'app_label': 'blogs',
'model': 'post',
'field_name': 'rating',
}),
)
我有一个VoteForm视图,它呈现VoteForm.html。在VoteForm.html中,表单操作应该是什么?如果我将它/ rate-my-post /然后我不能正则表达式,那么url就像rate-my-post/?objectid=x&score=y
,然后它不能正则表达它,因为Django在?
之后没有看到url。
我的解决方案是:我创建了另一个名为垃圾的视图,表单现在发送给它,垃圾视图获取表单值,然后垃圾将HttpResponseRedirect重定向到rate-my-post。
答案 0 :(得分:2)
您应该使用相同的视图(和相同的URL)来渲染表单,以用于处理表单(请参阅django docs中的此示例)。成功处理表单后,使用reverse重定向到您需要的页面。
像 -
def vote_form(request):
if request.method == 'POST': # If the form has been submitted...
form = VoteForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
# Process the data in form.cleaned_data
# ...
return HttpResponseRedirect(reverse('my_view_name',
kwargs={'objectid':x, 'score': y}))
else: # We're just rendering the html form
form = VoteForm() # An unbound form
return render(request, 'vote.html', {
'form': form,
})