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:
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>
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.