Django div 重新加载 - POST 后的 ajax GET 未获取最新的数据库模型实例

2024-01-25

在类似聊天的应用程序中,我使用 ajax 调用来发布新消息并更新页面上显示的消息,而无需重新加载整个页面。我的 ajax 调用发布工作有效 - 在数据库中创建了一个新的消息实例。但是,之后当我进行 ajax 调用以获取所有消息时,结果查询集中缺少新消息。如果我完全刷新页面,我可以看到所有消息,但这不是我想要的。

HTML 消息模板:

    {% for message in messages %}
    <p>
        {{ message.content }}
    </p>
    {% endfor %}

HTML 聊天模板:

<div id="chat">
    {% include "messages.html" %}
</div>

<form id="post-message-form", method="post" enctype="multipart/form-data">
    [my form goes here]
</form>

JavaScript:

$('#post-message-form').on('submit', function(event){
    event.preventDefault();
    $form = $(this);
    var data = new FormData($form.get(0));

    $.ajax({
        url: '/post/a/new/message/',
        type: 'POST',
        data: data,
        success: refresh_chat,
        cache: false,
        contentType: false,
        processData: false
    })

    return false;
}

function refresh_chat(){
    $.ajax({
        url: '/get/all/messages/,
        type: 'GET',
        success: function(json) {
            $('#chat').html(json['data']);
        }
    })
    return false;
}

Views:

import json
from django.template import loader
from .forms import MessageForm

# /post/a/new/message/
def post_message(request):
    if request.method == 'POST':
        form = MessageForm(request.POST)
        if form.is_valid():
            message = form.save()
            return HttpResponse(
                json.dumps({'status': 1,
                            'message': 'Message posted!'}),
                content_type='application/json'
            )

# /get/all/messages/
def get_messages(request):
    if request.method == 'GET':
        messages = loader.render_to_string('messages.html', context={'messages': Message.objects.all(), 'form': MessageForm()})
        return HttpResponse(
            json.dumps({'data': messages}),
            content_type='application/json'
        )

有什么想法为什么我在 POST 之后调用 ajax GET 时无法获取最新的数据库数据?谢谢!


事实证明,如果我在 ajax“完成”调用而不是“成功”调用上进行聊天刷新,它会起作用:

$('#post-message-form').on('submit', function(event){
    event.preventDefault();
    $form = $(this);
    var data = new FormData($form.get(0));

    $.ajax({
        url: '/post/a/new/message/',
        type: 'POST',
        data: data,
        cache: false,
        contentType: false,
        processData: false
    }).done(function() {
        refresh_chat();
    });

    return false;
}

感谢您的评论!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django div 重新加载 - POST 后的 ajax GET 未获取最新的数据库模型实例 的相关文章

  • 使用 django-social-auth 登录后获取 Facebook 数据

    我们已经建立了一个应用程序 使用django social auth使用 Facebook 验证用户身份的扩展 身份验证工作正常 但我们不清楚如何从 Facebook 获取有用信息 好友列表 点赞等 看起来django facebook处理
  • 使用 Django 将文件异步上传到 Amazon S3

    我使用此文件存储引擎在上传文件时将文件存储到 Amazon S3 http code welldev org django storages wiki Home http code welldev org django storages w
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • 如何绕过Access-Control-Allow-Origin?

    我正在一个平台上对我自己的服务器进行ajax调用 他们设置了阻止这些ajax调用的平台 但我需要它从我的服务器获取数据以显示从我的服务器数据库检索到的数据 我的 ajax 脚本正在运行 它可以将数据发送到我的服务器的 php 脚本以允许其处
  • 如何使用scrapy检查网站是否支持http、htts和www前缀

    我正在使用 scrapy 来检查某些网站是否工作正常 当我使用http example com https example com or http www example com 当我创建 scrapy 请求时 它工作正常 例如 在我的pa
  • python 中的 <> 运算符有什么作用?

    我刚刚遇到这个here http www feedparser org feedparser py 总是这样使用 if string1 find string2 lt gt 1 pass 什么是 lt gt 运算符这样做 为什么不使用通常的
  • Paste.httpserver 并通过 HTTP/1.1 Keep-alive 减慢速度;使用 httperf 和 ab 进行测试

    我有一个基于paste httpserver 的Web 服务器作为HTTP 和WSGI 之间的适配器 当我使用 httperf 进行性能测量时 如果每次使用 num conn 启动一个新请求 我每秒可以执行超过 1 000 个请求 如果我使
  • 使用 for 循环创建一系列元组

    我已经搜索过 但找不到答案 尽管我确信它已经存在了 我对 python 很陌生 但我以前用其他语言做过这种事情 我正在以行形式读取数据文件 我想将每行数据存储在它自己的元组中 以便在 for 循环之外访问 tup i inLine wher
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • Airflow 1.9 - 无法将日志写入 s3

    我在 aws 的 kubernetes 中运行气流 1 9 我希望将日志发送到 s3 因为气流容器本身的寿命并不长 我已经阅读了描述该过程的各种线程和文档 但我仍然无法让它工作 首先是一个测试 向我证明 s3 配置和权限是有效的 这是在我们
  • 在骨架图像中查找线 OpenCV python

    我有以下图片 我想找到一些线来进行一些计算 平均长度等 我尝试使用HoughLinesP 但它找不到线 我能怎么做 这是我的代码 sk skeleton mask rows cols sk shape imgOut np zeros row
  • 使用 Python 将连续日期分组在一起

    Given dates datetime 2014 10 11 datetime 2014 10 1 datetime 2014 10 2 datetime 2014 10 3 datetime 2014 10 5 datetime 201
  • 可以使用哪些技术来衡量 pandas/numpy 解决方案的性能

    Question 如何简洁全面地衡量下面各个功能的性能 Example 考虑数据框df df pd DataFrame Group list QLCKPXNLNTIXAWYMWACA Value 29 52 71 51 45 76 68 6
  • 如何指示 urwid 列表框的项目数多于当前显示的项目数?

    有没有办法向用户显示 urwid 列表框在显示部分上方 下方有其他项目 我正在考虑类似滚动条的东西 它可以显示条目的数量 或者列表框顶部 底部的单独栏 如果这个行为无法实现 有哪些方法可以实现这个通知 在我的研究过程中 我发现这个问题 ht
  • Python bug - 或者我的愚蠢 - 扫描字符串文字时 EOL

    我看不出以下两行之间有显着差异 然而第一个解析 而后者则不解析 In 5 n Axis of Awesome In 6 n Axis of Awesome File
  • 无法通过 Python 子进程进行 SSH

    我需要通过堡垒 ssh 进入机器 因此 该命令相当长 ssh i
  • 如何为 json 请求对象指定可选元素

    在 API 蓝图中 我希望为 POST 消息指定一个可选的 json 元素 示例 Add a new User POST To add a User send a JSON Request application json name A n
  • Django 管理器链接

    我想知道是否有可能 如果可以的话 如何 将多个管理器链接在一起以生成受两个单独管理器影响的查询集 我将解释我正在研究的具体示例 我有多个抽象模型类 用于为其他模型提供小型的特定功能 其中两个模型是DeleteMixin 和GlobalMix
  • pandas 中数据帧中的随机/洗牌行

    我目前正在尝试找到一种方法来按行随机化数据框中的项目 我在 pandas 中按列洗牌 排列找到了这个线程 在 pandas 中对 DataFrame 进行改组 排列 https stackoverflow com questions 157
  • 无法安装最新版本的 Numpy (1.22.3)

    我正在尝试安装最新版本的 numpy 即 1 22 3 但看起来 pip 无法找到最后一个版本 我知道我可以从源代码本地安装它 但我想了解为什么我无法使用 pip 安装它 PS 我有最新版本的pip 22 0 4 ERROR Could n

随机推荐