Как получить значение из пользовательского ввода HTML в представлении django?

Здравствуйте всем У меня есть HTML форма следующего вида: https://jsfiddle.net/ritzlucky13/z627Lrm3/

и после нажатия на post я перенаправляю его в views.py. может ли кто-нибудь подсказать мне, как получить значения всех полей формы в views.py. вот выводenter image description here. Я хочу получить значение поля в паре ключ-значение, как показано на рисунке выше, т.е. 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']

Но в этом случае я должен написать каждое имя входа в моем представлении

Для получения ввода формы без индивидуального доступа, Django предоставляет ModelForm

Для резюме :

  1. Определите модель для хранения информации о вашей форме

    .

    class 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 документация .

Вернуться на верх