Re: html templates and dynamic loading
Le 24/08/2013 04:44, Mantas Zilinskis a écrit :
this might help you
let me know if you need more help
Thank you for this good pointer.
On Fri, Aug 23, 2013 at 10:51 AM, Bastien Amiel <b.amiel@evs.com> wrote:
Le 23/08/2013 17:01, Mantas Zilinskis a écrit :
There is nothing more in chat.htmlcan you post all of chat.html
On Fri, Aug 23, 2013 at 7:04 AM, Bastien Amiel <b.amiel@evs.com> wrote:
Le 23/08/2013 11:26, Huu Da Tran a écrit :
On Thursday, August 22, 2013 8:42:04 AM UTC-4, Bastien Amiel wrote:
I need to update the chat when an event come but :
1.
If I update my chat sub page, inputs are reset (seems logic since html
is recreated).
You can always have some field that keep when the chat was started (in the session), and redisplay everything since that time.Then what would be the good / best method to update only the chat content ?
(I have 2 ideas but they don't seems very Django'ic)
2.
For now, I update the content every XX ms with a periodic request client
side.
Would it be possible / preferable to have a push from server when new
data comes or is there a better way to update this kind of content ?
Trying to hack django to get server push would be hell (look into tornado). If you really need server push, you may need to look into other technologies, like nodejs.
Using the periodic request client-side is what is mostly done.
Hope this helps.
HD.
1.
My question was not clear enough,
Let's admit i have this template page :
{% for elem in data %}
<div>
<a class="chattime">{{ elem.datetime }}</a>
<a class="chatname">{{ elem.name }} :</a>
<a class="chatline">{{ elem.text }}</a>
</div>
{% endfor %}
<a>Text : <input id="chatinput"></input></a>
and this view.py :
def getchat(request):
template = loader.get_template('chat.html')
context = RequestContext(request, { 'data': lines }) # lines is an array with lines
response = {'html' : template.render(context)}
return HttpResponse(json.dumps(response), mimetype='application/json')
and this javascript :
function getchat()
{
$.post('/getchat').done(function(data, textStatus, jqXHR)
{
$("#chat").html(data["html"])
})
}
Then whenever I call getchat() in javascript, the chat is reloaded with all the old lines, this point is ok, but
<input> field is reseted too, which mean that if user was typing, the content is erased.
I would say the solution is to create a second function in view getchatcontent that will send only the content so I do not
update the whole thing. Do you think it is the right way ?
2.
lets use periodic request client-side.
Thank you for your answer
there is a base.html template that contains
<head>
{% load staticfiles %}
<script type="text/javascript" src='{% static "jquery-1.9.1.js" %}'></script>
<script type="text/javascript" src='{% static "appchat.js" %}'></script>
</head>
<body>
<div id="chat">
</div>
<button id="addline">post</button>
</body>
appchat.js
$(document).ready(function()
{
$("#addline").click(function()
{
addline($("#chatname")[0].value, $("#chatinput")[0].value);
$("#chatinput")[0].value = ""
})
setInterval(function() { getchat() }, 1000);
})
function addline(name, text)
{
$.post('/addline', {"name":name, "text":text})
.done(function() { })
}
function getchat()
{
$.post('/getchat')Now you have everything, does this seems the right way to do what I want to achieve with django or is there a better way ?
.done(function(data, textStatus, jqXHR)
{
$("#chat").html(data["html"])
})
}
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home