我正在为使用下拉列表的Django项目添加功能。选择列表中的选项后,其重新加载的页面将重新加载。然后将选择的下拉选项的值的差异传递给页面重新加载的方法,否则正常渲染页面。
我相信我已经正确完成了功能的代码方面但是当我选择下拉选项时,没有任何反应!我是Django开发的新手(特别是HTML方面),所以任何帮助都会受到赞赏。这是我的代码:
def view(request):
if request.method == "POST":
form = ChoiceForm(request.POST)
if form.is_valid():
form.save()
value = form.cleaned_data['content']
value = dict(form.fields['content'].choices)[value]
print (value)
else:
form = ChoiceForm()
print("Printing default")
value = "1";
...
data = method(val = value)
....
pageModel = {
"page":page,
"form": form,
'table': table,
}
return render(request, 'url/example.html', pageModel)
.... class ChoiceForm(forms.Form):
CHOICES = (
(1, "Adwords"),
(2, "Bing"),
(3, "Combined"), content = forms.ChoiceField(choices=CHOICES, required=False)
我的HTML块引用了表单:
<form action='url/where/view/is/located' method='post'>{% csrf_token %}
{{ form.as_p }}
</form>
答案 0 :(得分:2)
如果没有Javascript,您无法执行此操作。
简单地从下拉列表中选择某些内容并不会触发提交;通常,您还需要一个提交按钮,但如果您想自动执行此操作,则需要一些JS代码来监听select元素的onchange
事件并提交表单。< / p>
答案 1 :(得分:0)
这就是我所拥有的:
from django.shortcuts import render, get_object_or_404, redirect
from .models import *
from .forms import *
from simple_history.models import HistoricalRecords
from datetime import date
def wypozycz_tester(request, numer_seryjny):
item = get_object_or_404(Tester, numer_seryjny=numer_seryjny)
numer = item.numer_seryjny
if request.method == "POST":
form = testerForm(request.POST, instance = item, initial={'data_wypozyczenia': date.today()}))
item.wypozyczony = True
form.save()
return redirect('display_testery')
else:
form = testerForm(instance=item)
return render(request, 'wypozycz.html', {'form':form, 'numer':numer})