DJANGO:用AJAX更新div

Har*_*rry 6 python django ajax jquery django-templates

我正在构建一个聊天应用程序.到目前为止,我正在使用jquery $ .post()添加聊天消息,这样可以正常工作.

现在,我需要从表中检索最新的聊天消息,并将该列表附加到聊天页面上.我是Django的新手,所以请慢点.

那么如何将聊天表中的数据恢复到聊天页面?

提前致谢!

Jia*_*aro 13

我最喜欢的这种方法是使用包含标签

基本上你创建一个单独的模板来渲染页面模板中的各个对象

页面模板:

{% load message_tags %}    

<h3>Messages</h3>
<div class="message_list">
    {% for message in messages %}
        {% render_message message %}
    {% endfor %}
</div>
Run Code Online (Sandbox Code Playgroud)

templatetags/message_tags.py:

from django import template

register = template.Library()

@register.inclusion_tag('individual_message.html')
def render_message(message):
    context_for_rendering_inclusion_tag = {'message': message}
    return context_for_rendering_inclusion_tag
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用相同的模板message_list在单独的视图中呈现要添加到div 的其他消息,您可以从ajax代码调用该视图

def ajax_retrieve_latest_message(request):
    # ... Get the lastest message
    render_to_response('individual_message.html', ... 
Run Code Online (Sandbox Code Playgroud)

你的jQuery看起来像......

$.post(url_of_ajax_view, request_data, function(data, status) {
    if (status == 'success') {
        $(".message_list").append(data);
    }
});
Run Code Online (Sandbox Code Playgroud)

为了完整起见,您的individual_message.html文件将包含用于在页面上显示实际消息的所有标记...

希望这一切都有帮助:)