【发布时间】:2019-09-09 11:20:07
【问题描述】:
我正在尝试使用 FilteredSelectMultiple 小部件创建表单。我设法让它显示在我的页面上,但在接收用户输入时遇到了困难。现在,在我单击submit 按钮页面后,只需刷新并再次显示相同的表单,而不是转到指定页面。我做错了什么?
到目前为止我的代码:
forms.py
class DrgSkaiciuokle(forms.Form):
drg_pasirinkimas = forms.ModelMultipleChoiceField(queryset=DRGkodas.objects.all(),
label="Pasirinkite atvejį sudarančius DRG",
widget=FilteredSelectMultiple("DRG kodai", is_stacked=False),
required=True)
class Media:
css = {
'all': ('/static/admin/css/widgets.css',),
}
js = ('/admin/jsi18n',)
#I have no idea if this part is right:
def clean_drg_pasirinkimas(self):
drg_pasirinkimas = self.cleaned_data['drg_pasirinkimas']
return drg_pasirinkimas
views.py
def DRG_skaiciuokle(request):
if request.method == 'POST':
form = DrgSkaiciuokle(request.POST)
pasirinkti_DRG = form.cleaned_data['drg_pasirinkimas']
context = {
'pasirinktiDRG': pasirinktiDRG,
}
#This page should be opened after submitting form instead of refresh
return render(request, 'DRGskaiciuokle_valid.html', context)
else:
form = DrgSkaiciuokle()
context = {
'form': form,
}
return render(request, 'DRGskaiciuokle.html', context)
我的 html 文件:
{% extends "base_generic.html" %}
{% block content %}
<div id='frame'>
<div id='sk_head'>
<h3>Kaštų konvertavimo skaičiuoklė</h3>
<h4>Pagal DRG metodiką</h4>
</div>
<form>
<div id='sk_body'>
<fieldset>
<legend>Įveskite duomenis</legend>
<form action="" method="post">
{% csrf_token %}
<table>
{{ form.media }}
{{ form.as_table }}
<script type="text/javascript" src="{% url 'jsi18n' %}"></script>
</table>
<input type="submit" value="Skaičiuoti">
</form>
</fieldset>
</div>
</form>
</div>
{% endblock %}
【问题讨论】:
-
如果您没有将
<form>标签上的方法设置为“post”,它将使用GET 提交,因此您永远无法到达if request.method == 'POST'。阅读this 了解表单。
标签: python django python-3.x django-forms django-views