1

如何从表单中获取值,并在一个步骤中重定向到名为MyViewlike的视图MyView/formvalue1/formvalue2?我有一个解决方案,但我认为这不是正确的方法。

详细地:

我正在尝试按照教程中的建议使用 Django-ratings

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 ?

我的解决方案是:我创建了另一个名为 junk 的视图,表单现在发送给它,垃圾视图获取表单值,然后垃圾将 HttpResponseRedirect 重定向到 rate-my-post。

4

1 回答 1

2

您应该使用与处理表单相同的视图(和相同的 url)来呈现表单(查看django 文档中的这个示例)。成功处理您的表单后,使用反向重定向到您需要的页面。

就像是 -

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,
    })
于 2013-01-23T09:19:21.833 回答