首页 > 解决方案 > 如何从 django 视图中的 HTML 用户输入中获取价值?

问题描述

大家好,我有一个 HTML 表单,如下所示:点击帖子后,我将其重定向到 views.py。谁能告诉我如何将表单所有字段的字段值放入views.py。这是我想要键值对中的字段值的输出,如上图所示,即 API=hello&Area=hello1 等等...

我知道我们可以使用这个 if html 来做到这一点:

<div class="form-group col-md-2">
                    <label for="param">TAF Parameter</label>
                    <input type="text" name="inputdata_API" class="form-control" id="inputapi_param" value="API" readonly>
                </div>

并查看:

def register(request):
    api = request.GET.get['inputdata_API']

但在那种情况下,我必须在我的视图中写下每一个输入名称

标签: javascripthtmldjango

解决方案


为了在没有个人访问的情况下获取表单输入,Django 提供了 ModelForm

对于简历:

  1. 定义一个模型来存储您的表单信息

    类 MyModel(models.Model): api = models.CharField() # ...

  2. 定义链接到前一个模型的模型窗体

     from django import forms
    
     class MyModelForm(forms.Form):
         class Meta:
             model = MyModel
             fields = ['api', # all others fields you want to display]
    
  3. 在里面views.py

     from django.http import JsonResponse
     from django.shortcuts import redirect
    
     def register(request):
         if request.method == 'POST':
              # Instanciate the form with posted data
              form = MyModelFor(request.POST)
              # Check if form is valid
              if form.is_valid:
                  # Create a new MyModel object if the form is valid
                  form.save()  # This is the most benefit line, save you from request.POST['field_name'] 
                  # You can eventually return to the same page
                  return redirect('.') 
              else:  # The form is invalid return a json response
                  return JsonResponse({"Error": "Form is invalid"}, status=400)
    
  4. 最后在模板中渲染表单字段,如下所示:

      <form action="{% url 'url_to_register' %}" method="post" novalidate>
         {% csrf_token %}
         {{ form.as_p }}
    
         <button type="submit" class="btn btn-success">Register</button>
      </form>
    

但是这种方法的缺点是前端表单的样式: 您需要在正确的位置添加一些 Bootstrap 类,例如,让它看起来很好看,它是一个对应物......

Django 表单文档


推荐阅读