Django:在<querydict:{} =“”> </querydict:>中找不到关键'网址':

时间:2013-07-15 04:08:17

标签: django templates post view

我想要做的是通过模板在model.py中设置一个参数。

main_index上有一个文本框,我想点击“提交”将其发布到结果页面。但是,结果页面无法接收POST,即始终打印“Not Post!”

以下是观点:

def main_index(request):
    c = {}
    c.update(csrf(request))
    cmodel = InfoController.objects.all()
    print "I am at index"
    return render_to_response('infoRetriever/index.html', c)

def results(request):
    if not request.method == 'POST':
        print "Not Post!"
    c = {}
    c.update(csrf(request))
    cmodel = InfoController()
    metaUrl = request.POST['urls']
    firstList = cmodel.controller(metaUrl)
    print "I am at result"
    for item in firstList:
        print "items: ", item
    return render_to_response('infoRetriever/results.html', { 'firstList': firstList})

模板:

<form action="{% url 'infoRetriever:request_page' %}" method="POST">
{% csrf_token %}
    <input type="text" name="urls" size="60" />
    <input id="submit" type="submit" value="Click" />
</form>

非常感谢。

1 个答案:

答案 0 :(得分:1)

您应该在request.POST时从request.method=='POST'中选择数据。这就是您拥有KeyError的原因,因为请求方法是GET。所以你可以这样做:

if request.method == 'POST':
    metaUrl = request.POST['urls']

另外,请确保您没有从request_page视图重定向到results视图,因为该请求将不再是POST results次视图请求。