Como atualizar corretamente uma div usando Jquery / Ajax em um modelo do Django
Eu tentei implementar a soluçãoaqui, mas não consigo fazê-lo funcionar corretamente.
Eu tenho uma div que é preenchida usando um loop dentro de um modelo do Django. Logo abaixo disso, tenho uma caixa de entrada onde posso digitar algum texto e clicar em Enviar. A ação Enviar deve acionar um script Jquery que obtém um objeto de modelo do servidor. Esse objeto de modelo deve ser dado à div, e a div deve subse- quentemente ser 'atualizada'. A intenção aqui é que, uma vez que a div seja 'atualizada', a variável acessada pelo loop for seja atualizada, exibindo assim novos resultados adicionais.
O código do meu modelo:
<h1> This is a Test Ajax Page</h1>
<div id="refresh-this-div">
{% for comment in question.comment_set.all %}
<p class="">{{ comment.body }}</p>
{% endfor %}
<input id="my-text-input-id" type="text" />
<button type="submit" class="add-comment-button">Add</button>
</div>
</div>
Meu Jquery:
<script type="text/javascript">
$(document).ready(function() {
$("button.add-comment-button").click(function() {
var com_body = $('#my-text-input-id').val();
$.ajax({
url: '/test_login_url',
success: function(data) {
$('#refresh-this-div').html(data);
}
});
});
});
</script>
Minha visão:
def test_login_url(request):
question = Question.objects.get(id=1)
com = Comment(question=question, body='This is a new Comment!')
question.comment_set.add(com)
return render_to_response('application/ajax_test_template.html', { 'question': question })
Quando clico no botão Enviar, a div é atualizada, no entanto, a seção div que foi atualizada agora contém uma cópia da tag h1. Quando clico em Enviar várias vezes, há tags e comentários h1 adicionais preenchidos.
Aqui está um exemplo da página antes de clicar em:before_clicking_submit
E aqui está um exemplo depois de clicar em Enviar:after_clicking_submit
Verifiquei duas vezes se minha implementação é o mais idêntica possível à solução que referenciei anteriormente, no entanto, sinto que provavelmente estou perdendo algo simples aqui. Qual é a maneira correta de atualizar a div com a nova variável atualizada?