我有一個django頁面(search_form.html)與表單文本字段/按鈕,觸發一個動作去和搜索數據庫輸入的值。結果顯示在另一個Django頁面(search_results.html)。從search_form.html的表單代碼如下:使用json decorator進行django視圖所需的參數 - 如何?
<form action="/datest/partner_search/" method="get">
<label class="control-label">Partner ID</label>
<input type="text" name="partnerQ">
<input type="submit" value="Partner Search">
</form>
我已經在我的應用程序下面urls.py
url(r'^search_form/$', views.search_form, name='search_form'),
url(r'^search_results/$', views.search_results, name='search_results'),
而在views.py我有以下
def partner_search(request):
error = False
if 'partnerQ' in request.GET:
q = request.GET['partnerQ']
if not q:
error = True
else:
my_data = MyTable.objects.filter(dbField__icontains=q)
return render(request, 'myapp/search_results.html', {'mydata': my_data, 'query': q})
return render(request, 'myapp/search_form.html', {'error': error})
這工作正常,但我的問題來了當我想在結果頁面中包含一個jqplot圖形,但要在圖形上繪製的數據需要基於傳遞給上述views.py方法的partnerQ字符串的數據庫查詢。所以我有一個單獨的方法,目的是在我的views.py中爲jqplot創建JSON數據。因此,在urls.py其他項的樣子:
url(r'^my_plot_json/$', views.my_plot_json, name='my_plot_json'),
的views.py方法(它仍然需要從字符串搜索領域 - 不知道如何捕捉到了這個)看起來像以下。注 - 我知道這是行不通的,因爲我沒有通過q
@render_to_json()
def my_plot_json(request):
mydata = MyTable.objects.values("iDate").filter(dbField__icontains=q).annotate(Count("id"))
jsondataset = [[str(z['iDate']), z['id__count']] for z in mydata]
return [jsondataset]
相應的JavaScript代碼片段看起來是這樣的:
function populateGraph() {
$.get('/myapp/my_plot_json', function(data) { drawTwelveMonthPlot(data); });
}
所以我在總結問題是這樣_我需要執行一個單獨的數據庫查詢來爲我的jqPlot圖生成JSON數據,但我無法弄清楚如何捕獲在my_plot_json方法的表單字段中輸入的搜索字符串。選項,因爲我看到它可能是:
- 從partner_search方法中傳遞字符串中調用my_plot_json?
- 有兩個行爲歸因於我的表單域,所以這兩個例程都被觸發?
我不知道這些是否可能,並承認,我是一個python/django新手,所以如果可能的話,將欣賞代碼片段樣式的解決方案。提前謝謝了。
感謝丹尼爾,但我並不完全確定我是如何直接調用Javascript的。就目前情況而言,HTML只具有drawTwelveMonthPlot中使用的div ID。如果我需要的JSON數據不在上面的URL中(/ myapp/my_plot_json),那麼我不知道如何將數據傳遞給它以進行繪圖。對不起,我是一個痛苦的新手提醒。 – deefex 2014-10-20 20:36:54
再次感謝丹尼爾,這很有用。 – deefex 2014-10-21 07:40:53