【发布时间】:2017-07-13 00:30:13
【问题描述】:
我希望用户在下拉菜单中选择几个产品,然后在同一页面上显示图表。用户应该能够再次从下拉菜单中选择/取消选择选项,然后刷新它,我想留在同一页面中。 My requirement
我已经编写了代码,但是因为对于 django 中的单独视图,我必须有一个不同的 url,它会转到我的下拉菜单不再工作的指定 url。
我已经渲染了与上面相同的显示页面,只是我的 url 不同。
我怎样才能让它工作并保持在同一个网址中。如果可能,使用输出数据重新加载同一页面。下面是我的代码。
index.html:
<div class="container">
<div class="row">
<div class="col-md-6">
<h3>Select products:</h3>
<form id="selectProduct" role="search" method="get" action="{% url 'selectedproducts' %}">
<select name="parameters[]" data-placeholder="Choose products" class="chosen-select" multiple tabindex="4">
{% for p in productnames %}
<option value="{{ p.productname }}"> {{ p.productname }} </option>
{% endfor %}
</select><br/>
<label for="submit"></label><button id="submit" type="submit" class="btn btn-default">Submit</button>
</form>
</div>
</div>
<div class="row"></div><br />
<h3> Distribution of sales in the products:</h3>
</div>
</div>
<p>{{ productList }}</p>
urls.py
url(r'^products/', views.productList, name='index'),
url(r'^selectedproducts/', views.selectedproducts, name='selectedproducts')
view.py
def productList(request):
productnames = Products.objects.all()
context = {
'productnames': productnames,
}
return render(request, 'sales/index.html', context)
def selectedproducts(request):
p = request.GET.getlist('parameters[]')
context = {
'productList': p,
}
# --- logic later for chart ------
return render(request, 'sales/index.html', context)
提前致谢。
【问题讨论】:
-
我会简单地使用 chart.js.chartjs.org/samples/latest/charts/pie.html 。您可以单击标签和图表交互。无需重新发明轮子。以下是其他选项:chartjs.org/samples/latest 如果您真的想按照您当前的方式进行操作,您必须搜索 Ajax/API 调用。通过 Ajax 调用,您无需重新加载即可从其他站点获取信息。
-
感谢您的参考,计划仅使用图表 :) 现在我主要专注于在与选择栏相同的页面上显示图表,而不是再次返回进行选择然后刷新图表。