2017-06-01 18 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' %}" /> 

可以嗎?它顯示來自我的功能的變量的警報框。