[Python] I can't find the cause for a 405 error in my POST method

Discussão em 'Python' iniciado por Stack, Abril 17, 2025.

  1. Stack

    Stack Membro Participativo

    I am working on a form using the Django framework and I keep getting a 405 error which I can't seem to fix. I have an html template which contains a form allowing admins to add new TAs to the database

    accountAdd.html

    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Edit Courses</title>
    <style>
    body {
    font-family: Arial, sans-serif;
    padding: 2rem;
    background-color: #f4f4f4;
    }
    .container {
    max-width: 600px;
    margin: auto;
    background: #fff;
    padding: 2rem;
    box-shadow: 0 0 10px rgba(0,0,0,0.1);
    }
    h1 {
    text-align: center;
    margin-bottom: 1.5rem;
    }
    label {
    display: block;
    margin-bottom: 0.5rem;
    font-weight: bold;
    }
    select {
    width: 100%;
    padding: 0.5rem;
    margin-bottom: 1rem;
    border: 1px solid #ccc;
    border-radius: 4px;
    }
    .button-group {
    display: flex;
    justify-content: space-between;
    }
    button {
    background-color: #333;
    color: #fff;
    padding: 0.5rem 1.5rem;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    }
    button:hover {
    background-color: #555;
    }
    </style>
    </head>
    <body>
    <center>
    <div class="container">
    <h1>Add Account</h1>
    {% if submitted%}
    TA added succesfully
    {% else %}
    <form action ="" method=POST>
    {% csrf_token %}

    {{form.as_p}}

    <input type="submit" value="Submit">
    </form>
    {% endif %}

    </div>
    </center>
    </body>
    </html>


    Views.py (relevant method and imports only)

    from django.shortcuts import render
    from django.views import View
    from .models import *
    from .forms import *
    from django.http import HttpResponseRedirect

    class accountAdd(View):
    def get(self,request):
    submitted = False

    if request.method == 'POST':
    form = TAForm(request.POST)
    if form.is_valid():
    form.save()
    return HttpResponseRedirect('accountAdd?submitted=True')

    else:
    form = TAForm
    if 'submitted' in request.GET:
    submitted = True

    form = TAForm
    return render(request,'accountAdd.html', {'form': form, 'submitted': submitted})



    urls.py

    from django.urls import path
    from . import views

    urlpatterns = [
    path('directory', views.directory.as_view(), name='directory'),
    path("courseDetails", views.courseDetails.as_view(), name='courseDetails'),
    path("courseEdit", views.courseEdit.as_view(), name='courseEdit'),
    path("", views.login.as_view(), name='login'),
    path("accountEdit", views.accountEdit.as_view(), name='accountEdit'),
    path('courseDetails/<str:courseID>', views.courseDetails.as_view(), name='courseDetails' ),
    path("accountAdd", views.accountAdd.as_view(), name='accountAdd'),
    ]


    TA model in models.py

    class TA(models.Model):
    name = models.CharField(max_length=100)
    phoneNum = models.CharField(max_length = 10)
    email = models.CharField(max_length = 100)
    officeHours = models.CharField(max_length = 100)
    password = models.CharField(max_length = 100, default = "pass")


    What could be causing this issue? I am using sql-lite which automatically adds ids to the tables, could this have something to do with the issue?

    Continue reading...

Compartilhe esta Página