python - 如何为多个 HTML 表单提供单一 View - Django

标签 python html django forms

这是我的观点。所以我想在同一个 View 中保留 2 个不同的 HTML 表单,但我无法这样做,因为每当我添加 1 个表单时,我都会收到其他表单没有的错误。

def home(request):
    name = None
    if request.method == 'POST':
        name = request.POST.get('name')
        choices = request.POST.get('choices')
        subtest = request.POST.get('subtest')
        reference = request.POST.get('reference')
        unit = request.POST.get('unit')
        test = Test()
        test.name = name
        test.save()
        subtest = Subtest()
        subtest.test = Test.objects.get(name=choices)
        subtest.name = subtest
        subtest.unit = unit
        subtest.reference_value = reference
        subtest.save()
        # print(name)
        return redirect('home')
    return render(request,'main.html',{}) 

我有两种不同的表格。我没有使用 django 表单,因为我想尝试一些新东西。

我的第一份表格

<form method="POST">
        {% csrf_token %}
        <div class="icon-holder">
          <i data-modal-target="test-popup" class="icon-cross"></i>
        </div>
        <div class="input-group">
          <input type="text" name="name" placeholder="Test name" />
        </div>
        <div class="button-group">
          <button type="submit">Submit</button>
        </div>
      </form>

我的第二形式

<form method="POST">
        {% csrf_token %}
        <div class="icon-holder">
          <i data-modal-target="menu-test-popup" class="icon-cross"></i>
        </div>
        <div class="input-group">
          <label for="test-select">Test Name:</label>
          <select name="choices" id="test-select">
            {% for test in test %}
            <option value="{{test.name}}" name='choices'>{{test.name|title}}</option>
            {% endfor %}
          </select>
        </div>
        <div class="input-group">
          <input type="text" name="subtest" placeholder="SubTest name" />
        </div>
        <div class="input-group">
          <input type="text" name="reference" placeholder="Reference rate" />
        </div>
        <div class="input-group">
          <input type="text" name="unit" placeholder="Unit" />
        </div>
        <div class="button-group">
          <button type="submit">Submit</button>
        </div>
      </form>

最佳答案

第一种形式

<form method="POST">
...
<input name="form_type" value="first-form" type="hidden">
</form>

第二种形式

<form method="POST">
...
<input name="form_type" value="second-form" type="hidden">
</form>

查看功能

def view(request):
  if method == "POST":

    form_type = request.POST.get('form_type')

    if form_type == "first-form":
      # first form's process
    elif form_type == "second-form":  
      #second form's process

关于python - 如何为多个 HTML 表单提供单一 View - Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60238995/

相关文章:

python - Django - 将 Base64 图像从模板保存到静态

python - Facebook 营销 api 'Unsupported get request. Object with ID ' [number_of_ad_account_id]' 不存在

javascript - 在手机上点击下拉菜单时使容器保持原位

python - 如何将 zip 文件发送到前端以在 DRF 中下载

javascript - 如何从 HTML 中的 select 标签中提取选定的值?

django - Wagtail 管理图像崩溃

如果div类标题文本包含 "English",Python 3 BeautifulSoup获取URL(href或baseURL)

python - 多线程 Python 应用程序和套接字连接的问题

javascript - hr在移动端div后面

javascript - php中来自mysql数据库的重复值验证