2009-11-19 68 views
2

做ajax請求的正確方法是什麼?我見過有人使用返回的render_to_string,以便他們可以使用模板語言在python中執行所有格式。例如〜Django ajax格式化慣例

return render_to_string('calendar.html', { 
'self' : self, 
'month' : self.today.month,}) 

以此爲的JavaScript:

$('#django_calendar_response').html(response) 

但我也看到有人使用DOM功能,如

return HttpResponse(serializers.serialize("json", 
ilst, relations=('user',)), "application/json") 

在JavaScript是格式化的JavaScript內的輸出

items_display=function(items){ 
    return LI(null, 
    A({'class':'userlink', 
    'href':'/url/user/'+items.fields.user.fields.name}, 
    items.fields.user.fields.name), 

是其中一個正確和其他錯誤?我應該在javascript中還是在python中格式化我的輸出?

+0

「正確」?取決於AJAX的期望。通常Ajax使用JSON。你的AJAX使用什麼? – 2009-11-19 02:46:17

+0

可以預料,我只是不確定是否有任何方法的優缺點,而不是保持對象可用於在JavaScript內進行操作或格式化Python中的所有東西的可靠性 – dagoof 2009-11-19 03:41:18

回答

1

我都這麼做。有時我在大頁面模板中使用了簡短的模板片段{% include %}。渲染這些元素並返回插入到DOM中的html(因爲代碼已經設置)通常比DRY更重要,而不是必須編寫JS來完成(再次)。其他時候,我只是生成一些JSON並將其注入到DOM中。

不久之後,您可以混合搭配使用。

+0

這是我尋找的答案謝謝 – dagoof 2009-11-22 02:28:37

2

我一直在使用JSON專門爲AJAX,與simplejson返回任何數據是很容易的,它看起來像這樣:

from django.utils import simplejson 
reply = simplejson.dumps({'comment_body': formatted_post, 'user_icon': request.user.profile.image.url }) 
return HttpResponse(reply, mimetype="application/json") 

,並在客戶端,使用jQuery的。員額方法處理一個JSON回覆真的是一件容易的事,你可以指定JSON作爲您的數據類型:

$.post("/postcomment/", { body: comment_body }, 
    function(data){ 
    alert(data.comment_body) 
    }, "json"); 

我並不是說這是最好的解決辦法,但它被證明是非常強大的,易於操作...

希望這會有所幫助,

Martin