【发布时间】:2016-04-25 21:41:38
【问题描述】:
我看过很多动态表单的例子,但似乎找不到我的答案,所以请帮助我解决以下要求:
我有一个包含如下数据的 json 文件:
{
"cat1": {
"product1": {
"item1": "check box p1i1",
"item2": "check box p1i2",
"item3": "check box p1i3"
},
"product2": {
"item1": "check box p2i1",
"item2": "check box p2i2",
"item3": "check box p2i3"
}
},
"cat2": {
"product1": {
"item1": "check box p1i1",
"item2": "check box p1i2",
"item3": "check box p1i3"
},
"product2": {
"item1": "check box p2i1",
"item2": "check box p2i2",
"item3": "check box p2i3"
}
}
}
我已经根据类别然后项目呈现数据,因此用户将首先选择类别然后选择他想要的项目,并在此基础上根据选择过滤json文件,然后将其呈现为相关模板:
问题是由于创建的表单不是 Django 表单,所以我如何才能在视图中获取发布的数据,(会有一个输入框和几个复选框(基于用户选择)
views.py
def select_cat1(request, item):
if request.method=='POST':
?(how to get posted data here?)
else:
data = open(json_file).read()
json_data = json.loads(data)
product_list = {}
for key in json_data.get('cat1'):
product_list[key] = json_data['cat1'][key][item]
return render(request, 'cat1.html', {'item': item, 'product_list': product_list })
def select_cat2(request, item):
if request.method=='POST':
?(how to get posted data here?)
else:
data = open(json_file).read()
json_data = json.loads(data)
product_list = {}
for key in json_data.get('cat2'):
product_list[key] = json_data['cat2'][key][item]
return render(request, 'cat2.html', {'item': item, 'product_list': product_list })
cat1.html
{% extends 'base.html' %}
{% block content %}
<form method="POST">{% csrf_token %}
<label>enter your phone:</label>
<input type="text" id="mobile_number">
{% for key, value in product_list.items %}
<input type="checkbox" name="{{ key }}" value="{{ key }}"> {{ value }}<br>
{% endfor %}
<button type="submit" >Submit</button>
</form>
{% endblock %}
【问题讨论】: