pythonhtmldjangobackend

my Django registration page redirect isn't working


i'm trying to make a registration page for my Django project. When i compile the registration form it gives me the error in the image because it tries to go to this path (he doubles users/register): localhost/users/register/users/register/. How can i fix it? this is my code:

Error image:

users/view.py:

def register_view(request):
    if request.method == "POST":
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('homepage')
    else:
        form = UserCreationForm()
    return render(request, "users/register.html", {"form": form})


users/urls.py:

urlpatterns = [
    path('register/', views.register_view, name="register"),
]



main/views.py:
def homepage(request):
    return render(request, 'homepage.html')


main/urls.py:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.homepage, name="homepage"),
    path('music/', include('music.urls')),
    path('users/', include('users.urls')),
]


html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Registration</title>
</head>
<body>
    <h1>REGISTER A NEW USER</h1>
    <form class="form-with-validation" action="users/register/" method="post">
        {% csrf_token %}
        {{ form }}
        <button class="form-submit">Submit</button>
    </form>
</body>
</html>

Solution

  • It seems like you are already on the register page and then you are hitting the URL users/register/ with POST request while already being on register page. So it doubles the URL. To resolve this you need to put a slash before, like /users/register/. this is because then through this slash you will be going from home (let's say localhost:8000) to users/register. So try adding a slash before and see what happens.