Python / Django数据到jquery警告框

时间:2017-06-01 12:53:38

标签: jquery django

我有一个获取一些数据的函数。结果例如:

sites = Site.objects.filter(is_active=False)

在django admin.py中按下按钮后运行函数:

def my_function(self, request):
    sites = Site.objects.filter(is_active=False)
    return HttpResponseRedirect(request.META["HTTP_REFERER"], {'result': sites})

def get_urls(self):
    urls = super(ConfigAdmin, self).get_urls()
    my_urls = [
        url(r'^my_function/$', self.export),
    ]
    return my_urls + urls

这是我的按钮代码:

<input type="submit"  onclick="location.href='my_function/'" value="{% trans 'My_function' %}" />

我想将结果放到jquery警告框中。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

首先,您的视图需要返回一个有效的json对象,以便jquery回调可以处理它。 Django有一个内置的JsonResponse,我们可以使用它来序列化我们的数据。

from django.http import JsonResponse

def my_function(self, request):
    sites = Site.objects.filter(is_active=False).values_list('name', flat=True)
    return JsonResponse({'result': sites}, safe=False)

现在,我们需要在页面上用jquery显示它。您可以通过将单击回调绑定到链接并提醒视图结果来执行此操作。

<a href="#" id="my-button">{% trans 'My_function' %}</a>

<script>
$('#my-button').click(function(){
    $.get('my_function/', function(data){
        alert(data.result);
    });
});
</script>

答案 1 :(得分:0)

我是这样做的。它有效,但我不知道这是一种正确的方式:

我的admin.py:

def my_function(self, request):
    sites = Site.objects.filter(is_active=False)
    if request.is_ajax():
        message = sites
        return HttpResponse(message)
    else:
        return HttpResponseRedirect(request.META["HTTP_REFERER"])

我的.js文件:

$('#content > p > input[type="submit"]:nth-child(2)').click(function() {
        $.get("my_function/", function (data) {
        alert(data);
    });
    });

我的模板文件:

<input type="submit"  onclick="location.href='my_function/'" value="{% trans 'My_function' %}" />

可以吗?它显示带有我函数变量的警告框。