【发布时间】:2014-10-20 15:48:14
【问题描述】:
我有一个带有表单文本字段/按钮的 django 页面 (search_form.html),该页面触发了一个操作,该操作会使用输入的值搜索数据库。结果显示在另一个 django 页面 (search_results.html)。 search_form.html 中的表单 sn-p 如下所示:
<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 sn-p如下所示:
function populateGraph() {
$.get('/myapp/my_plot_json', function(data) { drawTwelveMonthPlot(data); });
}
所以我总结的问题是这个_我需要执行一个单独的数据库查询来为我的 jqPlot 图生成 JSON 数据,但我不知道如何捕获在 my_plot_json 的表单字段中输入的搜索字符串方法。我看到的选项可能是:
- 在 partner_search 方法内对 my_plot_json 的调用中传递字符串?
- 是否有两个动作归因于我的表单域,所以这两个例程都会被触发?
我不知道其中任何一个是否可行,诚然,我是一个 python/django 新手,所以如果可能的话,我会很感激 code-sn-p 风格的解决方案。非常感谢。
【问题讨论】:
标签: javascript python json django jqplot