Ваш views.py
немного не похож - вы нигде не отображаете свою форму. Я разработал быстрое приложение (которое, я думаю, делает то, что вы ищете) - дайте мне знать, если это работает:
main / templates / index. html
Здесь я просто установил действие формы на ""
(это все, что вам нужно здесь) и раскомментировал строку form.as_p
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Test Form 1</title>
</head>
<body>
<form action="" method="post" autocomplete="off">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Send message">
</form>
</body>
</html>
main / views.py
Обратите внимание на различия здесь: мы проверяем тип запроса и предпринимаем соответствующие действия в зависимости от того, какой тип запроса поступает. Если это запрос POST, мы обрабатываем данные формы и сохраняем их в базе данных. Если нет, нам нужно отобразить пустую форму, чтобы пользователь мог ее заполнить.
from django.shortcuts import render, redirect
from .forms import HomeForm
def insert_my_num(request):
# Check if this is a POST request
if request.method == 'POST':
# Create an instance of HomeForm and populate with the request data
form = HomeForm(request.POST)
# Check if it is valid
if form.is_valid():
# Process the form data - here we're just saving to the database
form.save()
# Redirect back to the same view (normally you'd redirect to a success page or something)
return redirect('insert_my_num')
# If this isn't a POST request, create a blank form
else:
form = HomeForm()
# Render the form
return render(request, 'index.html', {'form': form})
Дайте мне знать, если это работает!