gpt4 book ai didi

javascript - Django 在 `model.save()` 之后不更新 HTML 模板

转载 作者:太空狗 更新时间:2023-10-30 02:51:40 25 4
gpt4 key购买 nike

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

# Delete media
def delete(self, request, pk, format=None):
media = get_object_or_404(Media, pk=pk)
media.deleted = True
media.save()
return Response(status=status.HTTP_200_OK)

然后触发 JavaScript location.reload();,重新加载的页面仍然包含“已删除”模型。在数据库中,deleted 字段为 True,在我的模板中,我这样做:

{% for media in issue.getMedia %}
{% if not media.deleted %}
{% include 'core2/include/media.html' %}
{% endif %}
{% endfor %}

当我重新加载 Django 网络服务器时,它不再显示 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 表单修改对象时(例如创建对象时),页面会正确重新加载。

第 2 版

issue.getMedia 在问题模型上的实现:

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

最佳答案

尝试将“never_cache”装饰器添加到负责页面呈现的 View 中:

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)

关于javascript - Django 在 `model.save()` 之后不更新 HTML 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54888645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com