我对Django很新,所以如果我犯了愚蠢的错误,我就会大肆宣传 这是我到目前为止的代码:
对于views.py:
def bylog(request):
if request.POST.get('Filter'):
return render(request, 'index.html', context)
filtered_login = Invalid.objects.values_list('login').distinct()
filtered = []
for item in filtered_login:
filtered.append(item[0])
results = {'results': results, 'filtered': filtered}
return render(request, 'bylog.html', context)
以下是bylog.html的一小部分:
<select id>"dropdown">
{% for item in filtered %}
<option value={{ item }}">{{ item }}</option>
{% endfor %}
</select>
<input type="submit" value="Filter" name="Filter" />
我的主要目标是从下拉列表中获取值,在用户单击Filter
按钮后,该值将传递到另一个模板。
这甚至可能吗?
谢谢你的帮助。
答案 0 :(得分:0)
我的目标基本是我在django中管理POST
,这意味着您要将任何数据/变量从模板发送到视图,然后对其进行任何操作(将其发送给另一个模板或商店......)
基本原理是(使用HTML表单,而不是Django表单):
- Create a HTML form in the template
- Add the selects/inputs with the data you want to manage and a button/input to make the post
- Manage the post in the view
示例强>
模板表单
<form id="" method="post" action=".">
{% csrf_token %}
<select id="any_name" name="any_name">"dropdown">
{% for item in filtered %}
<option value={{ item }}">{{ item }}</option>
{% endfor %}
</select>
<input type="submit" value="Filter" name="Filter" />
</form>
<强> view.py 强>
def your_view(request):
if request.method == 'POST': # If anyone clicks filter, you receive POST method
data = request.POST['any_name']
# Do what you need here with the data
# You can call another template and send this data
# You can change any_name for the variable you want, changing the name and id in the select
#Your view code
我建议您阅读Django forms
,因为如果您需要更大的表单,要管理包含大量字段的模型的数据,Django Form
将为您节省大量时间