带反向的Django HttpResponseRedirect无法正常工作

时间:2015-02-26 13:06:41

标签: django

在表单中,一切正常,HttpResponseRedirect越少 我尝试将表单内容重定向到rateio.html。但是,这显示错误:

NoReverseMatch at /proposal/ Reverse for 'rateio/' with arguments '()' and keyword arguments '{'table': .......

我发现奇怪的是,我只是指着rateio只有reverse('rateio/', ... Django正在寻找/proposal/

有人可以告诉我,我做错了什么?谢谢你的关注。

views.py

def proposal(request):
if request.method == 'POST':
    form = Proposal(request.POST)
    if form.is_valid():
        validate, content = table_split(request.POST)
        if validate==True:
            table, priority, total_sum  = valido(content)
            json_priority = simplejson.dumps(priority)
            json_total_sum = simplejson.dumps(total_sum)
            return HttpResponseRedirect(reverse('rateio/', kwargs={'table':table, 'priority' : json_priority, 'total_sum' : json_total_sum}))
        if validate==False:
            return render_to_response('proposal.html', {'form' : form, 'not_validate' : 'Incorrectly filled in proposal fill again'}, context_instance=RequestContext(request))
    else:
        return render_to_response('proposal.html', {'form' : form, 'not_validate' : 'Incorrectly filled in proposal fill again'}, context_instance=RequestContext(request))
else:
    form = Proposal()
    return render_to_response('proposal.html', {'form' : form}, context_instance=RequestContext(request))

def rateio(request,data):
    return render_to_response('rateio.html', {'table':data[table], 'priority' : data[priority], 'total_sum' : data[total_sum]}, context_instance=RequestContext(request))

urls.py

url(r'^rateio/$', 'mge.core.views.rateio'),
url(r'^proposal/$', 'mge.core.views.proposal'),

proposal.html

<form action="" method="post">
    {% csrf_token %}
    .....
    <input type="submit" value="Send">
</form>

1 个答案:

答案 0 :(得分:1)

你有两个错误。

首先,reverse的第一个参数是视图名称,而不是URL。所以它应该是urls.py中的'mge.core.views.rateio'。或者甚至更好,给模式一个明确的名称 - name="ratio"并使用它。

其次,您尝试传递三个kwargs,但比率URL不接受任何参数。你对这些价值观有什么期望?其中两个是JSON文档,您不希望在URL中传递它们。