Форум сайта python.su
Добрый день, ув.форумчане, помогите решить проблему.
Использую для вывода древовидных комментариев django-mptt.
Каким образом можно перезагрузить\обновить recursetree nodes если я добавляю комментарии с помощью ajax?
ul class="parent"> {% recursetree nodes %} <li>{{ node.created_date }} {{ node.text }} {{ node.id }} <form method="POST" class="post-form" action="/create_post/{{node.id}}/" id="post-form-{{ node.id }}"> {% csrf_token %} <input name="text" type="text" id="{{ node.id }} " placeholder="Comments"></input> <div id="results"></div> <!-- errors show --> <input type="submit" value="Post" class="btn btn-primary" > </form> {% if not node.is_leaf_node %} <ul class="children" id="list-{{ node.id }}"> {{ children }} </ul> {% endif %} </li> {% endrecursetree %} </ul>
$('.post-form').on('submit', function(e){ e.preventDefault(); $.ajax({ url : $(this).attr('action'), type : "POST", data: $(this).serialize(), success : function(data) { console.log(data); console.log("success"); }, // handle a non-successful response error : function(xhr,errmsg,err) { $('#results').html("<div class='alert-box alert radius' data-alert>Oops! We have encountered an error: "+errmsg+ " <a href='#' class='close'>×</a></div>"); // add the error to the dom console.log(xhr.status + ": " + xhr.responseText); // provide a bit more info about the error to the console } }); });
Отредактировано Kacilo (Фев. 6, 2017 10:46:12)
Офлайн
Kacilo
Если вы работаете с ajax, то единственно верным решением будет использование какого-нибудь более-менее мощного клиентского фреймворка на свой вкус (вместо постоянного перерендеривания страницы на сервере - манипуляции с ДОМ на клиенте). Я бы рекомендовал angular.js. Поверьте, у вас уменьшится размер геморроя в разы.
Офлайн
FishHook
Я тоже уже начал задумываться про AngularJS. Я думал может надо подключать дополнительный модуль для этих целей типа django.contrib.comments или прочих.
Спасибо за ваш ответ буду пробовать Angular.
Офлайн