Django - передача нескольких входов HTML-формы в представление
У меня есть 3 входа формы, которые будут отправлены при нажатии на одну главную кнопку, чтобы затем быть переданными в представление в качестве параметра запроса. Я хочу получить значения first_name, last_name и email внутри моего представления, используя request.get(). Когда кнопка нажата, значения внутри моей формы появляются как None
HTML:
<div id="form_content">
<form action="" method="post">
<section class="form_inputs">
<label for="first_name">First Name:</label>
<input type="text" id="first_name">
</section>
<section class="form_inputs">
<label for="last_name">Last Name:</label>
<input type="text" id="last_name">
</section>
<section class="form_inputs">
<label for="email">Email:</label>
<input type="text" id="email">
</section>
<input type="submit" value="Submit">
</form>
</div>
views.py
def home(request):
form_response = request.GET.get("form_content")
print(form_response)
context = {"title": "Home"}
return render(request, "myApp/home.html", context)
В ваших тегах ввода вы не передали параметр name
. Передайте параметр name
в наших тегах input, так как django собирает данные из тегов name. Например, в вашем случае, это должно быть:
<input type="text" id="id_first_name" name="first_name">
<input type="text" id="id_last_name" name="last_name">
<input type="text" id="id_email" name="email">
сначала вам нужно добавить csrf_token в ваш код для метода post, а также дать имя каждому входу, как это сделано здесь :
<div id="form_content">
<form action="" method="post">
{% csrf_token %}
<section class="form_inputs">
<label for="first_name">First Name:</label>
<input type="text" name="first_name" id="first_name">
</section>
<section class="form_inputs">
<label for="last_name">Last Name:</label>
<input type="text" name="last_name" id="last_name">
</section>
<section class="form_inputs">
<label for="email">Email:</label>
<input type="text" name="email" id="email">
</section>
<input type="submit" value="Submit">
</form>
</div>
и затем:
def home(request):
first_name = request.POST['first_name']
last_name = request.POST['last_name']
email = request.POST['email']
print(first_name, last_name, email)
context = {"title": "Home"}
return render(request, "myApp/home.html", context)