2011-11-13 21 views
-1

在我的Django模板中,我使用$ .ajax jquery方法,其中url指向我的一個django視圖。現在我如何在這個Django視圖中使用render_to_response?jquery回電Django模板

def document_status(request): 
    if request.method == u'GET':   
     GET = request.GET 
     if GET.has_key(u'doc_type') and GET.has_key(u'iqama_no'): 
      pass 
    json_response = simplejson.dumps({'res':True}) 
    #return HttpResponse(json_response, mimetype='application/json') 
    return render_to_response('tracking/index.html') 
+0

你的代碼有什麼問題? –

+0

上面的視圖是通過jquery $ .ajax方法調用的。現在我想重定向到索引模板,但上面的代碼不會重定向到index.html模板。有什麼辦法重定向到jQuery中的回調特定的Django模板? – Asif

回答

1

AJAX不用於重定向,它用於從服務器異步獲取數據。

但如果你真的想重定向,而不是渲染的模板(這將無法正常工作),返回HttpResponse包含要重定向到URL,並在AJAX調用success功能使用返回的數據從重定向JavaScript的。

所以javascipt的代碼看起來是這樣的:

$.ajax({ 
    url: "<your url>", 
    data: <whatever data you want to send>, 
    success: function(new_url){ 
     window.location = new_url; 
    } 
}); 

而且Django的處理程序:

def document_status(request): 
    # Do stuff... 
    return "http://url/you/wand/to/redirect/to" 

編輯

要回答在評論的問題,這是一種方法:

首先在網頁A的HTML模板:

<form action="http://url/of/page/B"> 
    <select name="value" onchange="this.form.submit();"> 
     <option value="1">First option</option> 
     <option value="2">Second option</option> 
    </select> 
</form> 

在網頁A的視圖代碼不應該改變,所以網頁B的觀點:

def page_b_view(request): 
    value = request.GET.get('value', '0') # '0' is default value if not found 
    if value = '1': 
     # Add some context variables here 
    elif value == '2': 
     # Add some other context variables here 
    return render_to_template(...) 

這樣應該可以給你的提示怎麼做,或者搜索什麼。

+0

但我想將一些模板變量傳遞給index.html。這些變量的值將取決於將通過ajax發送的數據。我怎樣才能做到這一點? – Asif

+0

@Asif您無法通過AJAX添加或更改上下文變量!要麼重新加載頁面,要麼重定向到另一頁面。 –

+0

有什麼辦法可以達到這個目的嗎?我嘗試了$('#results').html(' ').load('{%url test%}'),但它產生了相同的模板,意味着一個頁面中有兩個模板 – Asif