RuntimeError at /signup: Change your form to point to 127.0.0.1:8000/signup/ , or set APPEND_SLASH=False in your Django settings

RuntimeError at /signup You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to 127.0.0.1:8000/signup/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.

I got this problem while using forms. Please help I have used bootstrap for styling

        <form action="/signup/" method = "post" >
            {% csrf_token %}
            <div class="input-group mb-3">
                <span class="input-group-text" id="basic-addon1">@</span>
                <input type="text" class="form-control" placeholder="Username" name = "username" aria-label="Username" aria-describedby="basic-addon1">
            </div>

            <div class="input-group mb-3">
                <input type="text" class="form-control" placeholder="Firstname" name="fname" aria-describedby="basic-addon1">
            </div>

            <div class="input-group mb-3">
                <input type="text" class="form-control" placeholder="Lastname" name="lname" aria-describedby="basic-addon1">
            </div>

            <div class="input-group mb-3">
                <input type="email" class="form-control" placeholder="Recipient's email" name="email" aria-describedby="basic-addon2">
                <span class="input-group-text" id="basic-addon2">@gmail.com</span>
            </div>


            <div class="input-group mb-3">
                <input type="password" placeholder="password" name = "password" class="form-control">
            </div>

            <div class="input-group mb-3">
                <input type="password" placeholder="confirm password" name = "con_password" class="form-control">
            </div>
            
            
            <div class="input-group mb-3">
                <button type="submit" class="btn btn-primary">Signup</buttpn>
            </div>
        </form>
    </div>

Views.py

def signup(request):
    
    if (request.method == "POST"):
        username = request.POST.get("username")
        fname = request.POST.get("fname")
        lname = request.POST.get("lname")
        email = request.POST.get("email")
        password = request.POST.get("password")
        con_password = request.POST.get("con_password")
        
        User.objects.create_user(username=username, first_name=fname, last_name=lname, email=email, password=password)
        User.save()
        messages.success(request, "Account created successfully")
        return redirect("login")

Should Redirect to login Page

Either add APPEND_SLASH=False in settings.py. Or change form action="/signup/" to form action="/signup"

Back to Top