I am deploying a website using Django. There is an application called
'forum', supporting a discussion forum on my website.
The url of the discussion forum is 'XXX.com/forum/roomY'. I want to refresh
a div id = ''chat'', which includes a message list, on this page when users
click a refresh button. I want to use AJAX to do that.
But I find that I could not call the function updatestatementlist(request)
to retrieve the updated message list so it can be passed to the on this
page.
*/forum/views.py def updatestatementlist(request):*
log.debug("call statementlist function")
statements = Statement.objects.filter(discussion=discussion)return
render(request, 'forum/statementlist.html', {
'statements': statements
})
I cannot see the log info so I think by clicking the button I fail to call
this function.
The main html page of the discussion forum is */forum/discussion.html*,
which is under the template folder. I extract the html code within the div
id = "chat" to a separate html */forum/statementlist.html*as suggested here
<https://stackoverflow.com/questions/3583534/refresh-div-element-generated-by-a-django-template>
and
several other SO posts.
*/forum/discussion.html*
<button id = "Refresh"> Refresh </button><div id="chat">
{% include 'forum/statementlist.html' %}</div>
*/forum/statementlist.html*
{% recursetree statements %}{% endrecursetree %}
*forum.js*
//When users click the refresh button
$("#Refresh").on("click", function(event){
alert("Refresh clicked")
$.ajax({
url: '',
type: "GET",
success: function(data) {
alert("success")
var html = $(data).filter('#chat').html();
$('#chat').html(html);
}
});});
I also tried a few other url in this AJAX request: {% url
updatestatementlist %}, {% url 'updatestatementlist' %}. But then I think
it should be set to empty because I don't want to be redirected to another
url. The discussion forum has a url of 'XXX.com/forum/roomY', by clicking
the refresh button on this page I only want to refresh the div and fetch an
updated statement list from the server.
BTW, I can see the two alerts after I click the button.
*/forum/urls.py*
urlpatterns = [...
url(r'^(?P<label>[\w-]{,50})/$', views.discussion_forum,
name='discussion_forum'),
url(r'^(?P<label>[\w-]{,50})/$', views.statementlist, name='statementlist'),
]
/forum/views.py def discussion_forum() is used to load all the information
when the user first arrives at this forum.
I guess my problem might be that 1) the AJAX is wrong; 2) the url is wrong
so that the updatestatementlist() can not be called.
Can anyone help me with that? Thank you so much.
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/e8cf17fa-a7f7-4002-86dc-4b2460a3e140%40googlegroups.com.