2017-06-01 37 views
0

我有一个函数可以获取一些数据。结果是,例如:Python/Django数据到jquery警报框

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' %}" /> 

我愿把结果

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

功能Django的admin.py按钮被按下后运行到jquery警示框。我怎样才能做到这一点?

+0

获得什么结果? 'my_function'不返回结果。实际上,该功能**根本不会做任何事情**。 –

+0

return HttpResponseRedirect(request.META [“HTTP_REFERER”],{'result':sites}) - 现在可以吗?网站只是一个例证。功能检查很多网站并进行更改(编辑对象)。我想展示这样的内容:“有5个修改过的网站(链接在这里)”。 – jundymek

+1

您必须使用JQuery执行ajax调用并将结果显示在警告框中。 – Selcuk

回答

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> 
+0

我会尝试检查你的解决方案。 json存在问题。我收到一个错误:“不是JSON可序列化”。我必须阅读关于json。请原谅我的英语不好...... – jundymek

+0

啊,是的。 '网站'将不得不再次处理,也许你只想要一个网站名称列表?列表和字典都是可以序列化的。 'sites'在这一点上是一个查询集。 – Brobin

+0

我更新了答案,以便'sites'现在是Json可序列化的。 – Brobin

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' %}" /> 

可以吗?它显示来自我的功能的变量的警报框。