2011-06-26 148 views
1

我想傳遞參數給Django視圖,但我無法決定什麼是最好的方式來做到這一點。Django傳遞參數與AJAX

我提出AJAX調用和我的javascript代碼是

url = "/review/flag/code/"+ code +"/type/" + type + "/content/" + content + "/"; 
$.getJSON(url, somefunction); 

該呼叫

(r'^rate/code/(?P<code>[-\w]+)/type/(?P<type>[-\w]+)/content/(?P<content>[-\w]+)/$', 'project.views.flag_review'), 

,我可以得到在我看來,參數對應的URL,從而

def rate_review(request,code,type,content): 
    .... 

我的問題是因爲content來自textarea它可能涉及許多轉義字符,並通過它像上面導致正則表達式的問題。

有什麼辦法,如果我通過像www.xx.com/review/rate?code=1 &類型= 2 &內容= sdfafdkaposdfkapskdf ...參數?

感謝

回答

4

如果content變量,通過輸入textarea輸入字段的形式,你應該是使用HTTP POST方法提交數據。你會得到這樣的:

url = "/review/flag/code/"+ code +"/type/" + type; 
$.post(url, {'content': content}, somefunction, 'html'); 

(r'^rate/code/(?P<code>[-\w]+)/type/(?P<type>[-\w]+)/$', 'project.views.flag_review'), 

def rate_review(request,code,type): 
    content = request.POST['content'] 
    ... 
url = "/review/flag/code/"+ code +"/type/" + type; 
$.post(url, {'content': content}, somefunction, 'html'); 

(r'^rate/code/(?P<code>[-\w]+)/type/(?P<type>[-\w]+)/$', 'project.views.flag_review'), 

def rate_review(request,code,type): 
    content = request.POST['content'] 
    ... 
+0

這是很好的答案謝謝,但我使用的方法像$ .getJSON(網址,{內容:原因},somefunction);而不是$ .post。我怎樣才能在jQuery getJSON函數中獲取傳遞參數作爲post方法? – brsbilgic

+1

我發現這個:因爲沒有$ .postJSON,所以如果你正在做一個jQuery ajax post並期待一個JsonResult,你必須總是將'json'作爲第四個參數傳遞給$ .post。 – brsbilgic

3

當然,在你的rate_review功能,您可以訪問request.GET和訪問這些paramters:

/rate/code/?foo=bar 

def rate_review(request): 
    request.GET['foo']