В django ошибка пути при попытке отправить обычную регистрацию пользователя из
typ<form action="register" method="post">
{% csrf_token %}
<input type="text" name="first_name" placeholder="First name"><br>
<input type="text" name="last_name" placeholder="Last name"><br>
<input type="username" name="username" placeholder="Username"><br>
<input type="email" name="email" placeholder="Email"><br>
<input type="password" name="password" placeholder="password"><br>
<input type="password" name="confirm_password" placeholder="confirm_password"><br>
<input type="submit" name="submit" value="Register">
</form>e here
def register(request):
# print("in register")
# if request.method=="GET":
# return render (request,"register.html")
if request.method=="POST":
print("IN POST")
first_name=request.POST.get('first_name')
last_name=request.POST['last_name']
username=request.POST['username']
email=request.POST['email']
password=request.POST['password']
confirm_password=request.POST['confirm_password']
user=User.objects.create_user(username=username,password=password,email=email,first_name=first_name,last_name=last_name)
user.save()
print("User Created")
return redirect(home)
# if password==confirm_password:
# if User.objects.filter(username=username).exists():
# print("Username Already Taken")
# elif (User.objects.filter(email=email)):
# print("Email Already Taken")
# else:
# user=User.objects.create_user(username=username,password=password,email=email,first_name=First_name,last_name=Lirst_name)
# user.save()
# print("User Created")
# return redirect('/')
# else:
# print("Password and Confirm Password Does Not Match")
else:
return render (request,"register.html")
Ожидает перенаправления на домашнюю страницу, но выдает ошибку:
Страница не найдена (404) Метод запроса: POST URL запроса: http://127.0.0.1:8000/register/register. Используя URLconf, определенный в Finance_Tracker.urls, Django попробовал эти шаблоны URL в таком порядке:
[name='home'] register/ [name='register'] admin/ Текущий путь, register/register, не соответствует ни одному из этих путей.
Ваша форма находится на странице с url /register/
но в вашем HTML-теге формы есть action="register"
... действие формы является "относительным" url, поэтому при отправке формы она пытается отправить данные по <текущему url> + register
, т.е. по адресу /register/register
Поставьте косую черту перед action="/register"
...это превращает действие в "абсолютный" url, поэтому он заменит существующий сегмент пути при отправке формы
Или лучше использовать тег Django url
, чтобы использовать извлечение url из именованного представления в вашем urlconf
https://docs.djangoproject.com/en/5.0/ref/templates/builtins/#url
например, action="{% url 'register' %}"
...здесь 'register'
- это имя представления, а не сам url
смотрите https://docs.djangoproject.com/en/5.0/topics/http/urls/#examples