2013-07-15 31 views
0

找不到Key'urls',我想要做的是在model.py中通過模板設置一個參數。Django:在<QueryDict:{}>

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

您應該從request.POST挑選數據時request.method=='POST'。這就是爲什麼你有KeyError,因爲請求方法是GET。所以,你可以這樣做:

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

另外,還要確保你不是從request_page視圖重定向到results視圖那麼請求將不再是results視圖POST請求。

+0

謝謝,但它是「如果沒有request.method =='POST':」,結果頁面不需要POST ... – Robert

+0

是的,如你所說請求不是'POST',所以'POST'字典是空因此'KeyError' –

+0

那麼爲什麼它是空的?我怎樣才能拉出url文本?它應該是一個POST,但現在它不是... – Robert

相關問題