从POST请求获取数据

时间:2019-10-05 18:31:31

标签: python django

尽管正确更新了django模型,但POST数据并不总是符合我的逻辑

def new_record(request):
    form = RecordForm(request.POST or None)

    if request.method == 'POST':
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/new_record')
        else:
            form = RecordForm()

    item1 = request.POST.getlist('checkbox_1')
    item2 = request.POST.getlist('checkbox_2')
    item3 = request.POST.getlist('checkbox_3')

    print(item1)
    print(item2)
    print(item3)

    if 'on' in item1:
        print("Checkbox 1 is true")
        write_pdf_view(textobject='textobject', exam_record_number='123')
    else:
        print("Checkbox 1 is False")

    if 'on' in item2:
        print("Checkbox 2 is true")
    else:
        print("Checkbox 2 is False")

    if 'on' in item3:
        print("Checkbox 3 is true")
    else:
        print("Checkbox 3 is False")


    return render(request=request,
                  template_name='main/new_record.html',
                  context={"form": form}
                  )

我希望做的基本上是检查是否已选中一个复选框,如果为true,则将值传递给函数,现在我已经将y write_pdf_view值固定为我知道的存在的值,并且也不起作用(我是在上面导入的)

我觉得这对有经验的人来说可能是微不足道的,我是一个新的业余爱好者,只想学习!任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您的if语句在GET而不是POST期间执行。

我建议使用基于类的视图结构来构造代码,如下所示:

from django.views import View

class NewRecord(View):

    def get(self, request):
        return render(request, 'main/new_record.html', {'form': RecordForm})

    def post(self, request):
        form = RecordForm(request.POST)

        if form.is_valid():
            form.save()

        item1 = request.POST.get('checkbox_1', None)
        ##place the rest of your logic here

        return HttpResponseRedirect('/new_record')