Соглашение о форматировании Django AJAX - PullRequest
2 голосов
/ 19 ноября 2009

Какой правильный способ сделать ajax-запрос, я видел людей, использующих возвращаемую render_to_string, чтобы они могли выполнять все свое форматирование в python, используя язык шаблонов. например, ~

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

с этим как javascript:

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

Но я также видел людей, форматирующих вывод в javascript с использованием функций dom, таких как

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

где 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?

Ответы [ 2 ]

2 голосов
/ 19 ноября 2009

Я использую 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")

и на стороне клиента, с помощью метода .post jquery обработка ответа json также очень проста, вы можете указать json в качестве вашего типа данных:

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

Я не говорю, что это лучшее решение, но доказано, что оно очень надежное и простое в обращении ...

Надеюсь, это поможет,

Martin

1 голос
/ 20 ноября 2009

Я делаю оба. Иногда у меня есть короткие шаблоны, которые я {% include %} в большом шаблоне страницы. Часто более СУХОЙ отрисовывать их и возвращать HTML для вставки в DOM (так как код уже настроен), чем писать JS для этого (снова) В других случаях я просто генерирую JSON и вставляю его в DOM.

Вскоре вы можете смешивать и сопоставлять ситуацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...