【问题标题】:Django how to create a post request for multiple forms.?Django如何为多个表单创建一个post请求。?
【发布时间】:2017-12-12 18:27:15
【问题描述】:

我在同一个模板中有多个表单,每个表单都链接到一个按钮(aform 按钮,bform 按钮.....)当单击时会弹出一个带有一些文件的表单,我如何通过创建来保存该表单views.py 中的 post 请求

(我知道为单个表单创建一个 POST 请求。)但是我如何为多个表单实现这一点。 注意:一次只能提交一个表单。

定义示例视图(请求):

context = {
    'aform':AForm(),
    'bform':BForm(),
    'cform':CForm(),
    'dform':DForm()
}
template = "xyz.html"
return render(request, template, context)

如何为多个表单创建发布请求?

【问题讨论】:

  • 你有没有想过使用javascript/varieties?
  • 我是新手,所以我仍然不知道如何使用 javascript/varieties 来获取 POST 请求。
  • 哈桑先生回答的一切都是正确的。补充一点:如果你有 50 个表单,你的意思是你有 50 个按钮吗? (显示 1 并隐藏其他 49 个)。在这种情况下,无论单击哪个按钮,您都可以从 jquery/javascript 中读取并将其提交到答案所示的必要 URL。我建议您尝试使用一些自己的代码,并使用 Hasan 先生提供的开始。

标签: django-forms django-views


【解决方案1】:

您可以通过以下方式做到这一点。

  1. 使用 ajax 提交表单并分别处理每个表单。这样,每个表格都会发布在不同的链接中。
  2. 在两个表单的操作中放置不同的 URL。然后你会有 两种不同的视图函数来处理两种不同的形式。
  3. 从 POST 数据中读取提交按钮的值。您将必须发送一个参数,您可以通过该参数判断哪个 提交按钮被点击。

    forma = FormA(prefix="a")
    formb = FormB(prefix="b")
    which_form = request.GET.get('form_name')
    if request.POST:
         if which_form == 'a':
             forma = FormA(request.POST, prefix="a")
             if forma.is_valid():
                 obja = forma.save()
         if which_form == 'b':
             formB = FormB(request.POST, prefix="b")
             if formb.is_valid():
                 objb = formb.save()
    

【讨论】:

  • 我尝试了这种方法,但出现错误。 ValueError at / 视图 Church.views.HomeView 未返回 HttpResponse 对象。它返回 None 。
猜你喜欢
  • 2021-08-01
  • 2022-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-08
  • 2019-09-05
  • 2016-01-18
  • 2019-07-07
相关资源
最近更新 更多