Javascript Django不';t在`model.save()之后更新HTML模板`

Javascript Django不';t在`model.save()之后更新HTML模板`,javascript,python,ajax,django,django-rest-framework,Javascript,Python,Ajax,Django,Django Rest Framework,我有一个使用Django REST框架的Django应用程序。当我执行更改模型字段的Ajax调用时: #删除媒体 def delete(自我、请求、主键、格式=无): 媒体=获取对象或404(媒体,主键=主键) media.deleted=True media.save() 返回响应(status=status.HTTP\u 200\u OK) 然后触发一个JavaScriptlocation.reload(),重新加载的页面仍然包含“已删除”的模型。在数据库上,删除的字段为True,在我的模

我有一个使用Django REST框架的Django应用程序。当我执行更改模型字段的Ajax调用时:

#删除媒体
def delete(自我、请求、主键、格式=无):
媒体=获取对象或404(媒体,主键=主键)
media.deleted=True
media.save()
返回响应(status=status.HTTP\u 200\u OK)
然后触发一个JavaScript
location.reload(),重新加载的页面仍然包含“已删除”的模型。在数据库上,删除的
字段为True,在我的模板上,我这样做:

{%用于发行中的媒体。getMedia%}
{%if not media.deleted%}
{%include'core2/include/media.html%}
{%endif%}
{%endfor%}
当我重新加载Django Web服务器时,它不再显示
media.deleted
对象

编辑 Ajax请求是:

controller: function ($scope) {
            $scope.execute = function(url){
                console.log($scope.action)

                $.ajax({
                    url: $scope.action,
                    type: 'DELETE',
                    success: function(result){
                        location.reload();
                    },
                    error: function(e){
                        alert("Error deleting")
                        console.log(e)
                    }
                });
            }
        }
当我使用常规Django表单修改对象时(例如,在创建对象时),页面会正确地重新加载

第二版 在问题模型上实现
问题.getMedia

def getMedia(self):
返回Media.objects.filter(issue=self).order_by('creationDate'))

能否尝试使用
location.reload(true)
。可能它从现金中获取页面。

尝试将“从不缓存”装饰器添加到页面呈现的视图报告中:

from django.views.decorators.cache import never_cache

@never_cache
def myview(request, ...):
   ...
如果是CBV,则发送至调度方法:

class MyView(View):

    @never_cache
    def dispatch(self,request,*args,**kwargs):
        return super().dispatch(request,*args,**kwargs)

你确定重新加载有效吗?知道吗?可能是因为我没有更新序列化程序…?我们需要检查ajax调用是否正常工作。我怀疑数据库中的字段状态没有更改。撕裂没有问题。你能调用delete API,然后检查数据库中deleted的值吗?@sun\u jara数据库中的字段正确更改。因此,我按下按钮进行ajax调用,在后端和数据库上调试调用(一切正常),然后重新加载前端页面,清理缓存,但没有成功。只有重新启动django框架,它才能正确地重新加载模型。您能否共享
issue.getMedia
的实现,以及设置issue上下文变量值的get_context()方法。另外,你是否在任何地方使用预回迁相关软件?@selan-我仍然认为,问题在于重新加载。你是什么意思
每次重新加载时,我都会手动清理缓存。。我意识到,如果我在一个私有窗口上打开页面,模型会显示为更新,而在旧窗口(firefox)上仍然显示为旧窗口。我使用firefox来重新加载内容,我使用CTRL-shift+R来清除缓存。另外,我还有开发者工具>网络上的
禁用缓存
选项。它可以工作!你能解释一下禁用缓存的后果吗?页面呈现速度较慢?使用“从不缓存”装饰器,您可以指示浏览器不要缓存页面,因此每当用户需要时,他的浏览器将依次命中服务器(顺便说一句,这正是您在用例中想要的)。这会增加多少延迟取决于重建特定页面所需的工作。在有证据表明有太多用户需要同一个页面之前,我不会对动态站点中的缓存太过着迷。在这种情况下,我会考虑缓存,以减少服务器上的资源使用量,但在此之前,我会尝试优化页面渲染。缓存在这里不是一个选项,正如您已经体验到的,但是您有更多的解决方案可用。例如,您可以完全避免重新加载页面,而是使用DOM操作从现有页面中删除已删除的项。这可以通过ajax调用的成功返回安全地触发,这表明该对象已经在服务器上被删除。