LINUX.ORG.RU

[Django][Ajax] Бест практисис

 ,


0

1

Изначально:

  • На странице есть <div class=«comments»>...</div> с комментариями.
  • К этому блоку привязан pollForComments, который делает ajaxGet с параметрами {comment_object=x, after=y}.
  • Если к этому объёкту есть новые комметарии, view возвращает {result='OK', comments=comments}.
  • comments в ответе содержит комментарии отрендеренные по шаблонам, которые используются для отрисовки самой страницы. То есть достаточно просто comments.appendTo($(«div.comments»)).
  • Если результат pollForComment == OK, ставим pollForComments в таймаут на перезапуск. В противном случае показываем ошибку и больше не перезапускаем.

Дилемма:

Появились страницы, ны которых комментарии отрисовываются другим шаблоном, более простым. Как малой кровью модифицировать pollForComments и view для него, чтоб на таких страницах pollForComments возвращал комментарии, отрисованные другим шаблоном.

Варианты:

  • В ajax запросе передавать ещё и тип отрисовки комментариев. Прим.: 'mini', 'default'.
  • В json возвращать только данные, на клиенте держать нужный шаблон. Очень не хочется дублировать.
  • Ваш вариант, мысли по этому поводу...

Что делать?

P.S.: Трусы снял, бочку сделал.

★

в json передавать только данные )

stevejobs ★★★★☆
()
Ответ на: комментарий от SOmni

да мне они оба не нравятся, хотя больше склоняюсь тоже к первому. пост написал в надежде, что может кто-нибудь выдаст простую и гениальную идею, или просто необычное решение.

начинаю подозревать, что проблема не стоит долгих размышлении.

fuxter ★
() автор топика

>Ваш вариант, мысли по этому поводу...

А что тут ещё придумать? Либо рендеринг у клиента, либо на сервере. Оба варианта ты перечислил, выбирай тот, что больше по душе.

anonymous
()
Ответ на: комментарий от anonymous

я вообще очень неумный человек, поэтому спрашиваю. раз выяснилось, что вариантов, вроде как, больше нет, сделаю следующим образом.

добавлю в запрос «type», который может быть «default», «mini» или «json».

fuxter ★
() автор топика

Появились страницы, ны которых комментарии отрисовываются другим шаблоном

Этот способ зависит от того, 1. Можно ли по id камента понять что за страница и 2. Можно ли по id страницы (или другим признакам) понять, какого вида камент нужно нарисовать.

Если тут {comment_object=x, after=y} x и y это идентификаторы, то возвращаемся к п.1 и п.2 ))

Если не понять никак — я бы передавал что-то вроде {comment_object=x, after=y, mini=1|0}, а не дублировал отрисовку на клиенте.

gistart ★
()
Ответ на: комментарий от gistart

нет, определить никак. вернее можно, но скоро я буду использовать эти новые типы комментариев на других страницах, так что.

уже сделал с передачей параметра отрисовки. мне очень не нравиться, что получается некрасивый js-код. с комментариями идёт форма. для дефолтных комметов используется кастомная шкурка для TinyMCE, для мини комментов просто areatext. привязанный к этим формам код дублируется на 60%. вставлять в пять мест if (window.tinyMCE) тоже не красиво.

вобщем, не хватает мне опыта писать js. буду читать книжки.

спасибо за идею с идею, gistart. возможно позавчера бы и призадумался посерьёзней над ней.

fuxter ★
() автор топика
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.