编写刷新页面的Django ChoiceField

时间:2015-09-04 11:14:43

标签: python django forms

我正在为使用下拉列表的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>

2 个答案:

答案 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})