Как получить значение из пользовательского ввода HTML в представлении django?
Здравствуйте всем У меня есть HTML форма следующего вида: https://jsfiddle.net/ritzlucky13/z627Lrm3/
и после нажатия на post я перенаправляю его в 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']
Но в этом случае я должен написать каждое имя входа в моем представлении
Для получения ввода формы без индивидуального доступа, Django предоставляет ModelForm
Для резюме :
Определите модель для хранения информации о вашей форме
.class MyModel(models.Model): api = models.CharField() # ...
Определите форму модели, связанную с предыдущей моделью
.from django import forms class MyModelForm(forms.Form): class Meta: model = MyModel fields = ['api', # all others fields you want to display]
В
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)
В конце отобразите поля формы в шаблоне следующим образом :
<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 документация .