>

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)
                    }
                });
            }
        }

일반적인 장고 양식 (예 : 객체를 만들 때)을 사용하여 객체를 수정하면 페이지가 제대로 다시로드됩니다.

버전 2 issue.getMedia 의 구현  이슈 모델 :

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

  • 답변 # 1

    페이지 렌더링을 담당하는보기에 "never_cache"데코레이터를 추가하십시오 :

    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)
    
    

  • 답변 # 2

    location.reload(true) 를 사용해 볼 수 있습니까 . 현금에서 페이지를 가져 오는 것일 수도 있습니다.

관련 자료

  • 이전 Google Data Studio에서 차트에서 축을 바꾸는 방법
  • 다음 asp.net - azure 웹 사이트 배포 실패 - 동일한 종속 어셈블리의 다른 버전간에 충돌이 발견되었습니다