我尝试根据模板中的单选按钮从Django生成报告,但无法从模板中获取数据以确定应生成哪种报告变体。
模板摘录:
<form action="{% url projects.views.projectreport reporttype %}">
{% csrf_token %}
<p>
<input type="radio" name="reporttype" value="All">All<br>
<input type="radio" name="reporttype" value="Current">Current</p>
<input type = "submit" value="Print Project Report">
</form>
查看摘要:
reporttype = 'all'
if 'current' in request.POST:
reporttype = 'current'
return render_to_response('index.html',{'project_list': project_list, 'reporttype': reporttype}, context_instance=RequestContext(request))
我可以将模板中的值返回到同一视图,但这会转到另一个视图(projects.views.projectreport)。我可能做了一些非常基本的错误...
学家
答案 0 :(得分:2)
它不是request.POST
中的“当前”,它将是reporttype。 request.POST
是类似字典的对象,因此签入将检查键,而不是值。 reporttype的值可以是“Current”或“All”。所以只需更改代码即可
reporttype = request.POST['reporttype']
这会将reporttype
设置为全部或当前(假设您在html中有默认设置 - 目前您没有)。你也可以做你正在尝试做的事情
reporttype = request.POST.get('reporttype', 'All').lower()
将值设置为从单选按钮传入的值,或者设置为默认值“All”。它似乎也希望它更低,所以坚持lower()
应该为你处理。