В 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

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