TypeError at / Accept() got an unexpected keyword argument 'name'

Я хочу получать данные от пользователя и сохранять их в базу данных с помощью Django. Я пытался решить эту задачу. Но я не могу решить эту проблему и не нашел никакого рабочего решения в интернете.

Я получаю эту ошибкуenter image description here

Мой файл views.py

def Accept(request):
    if request.method == "POST":
        name = request.POST.get("name","")
        phone = request.POST.get("phone","")
        email = request.POST.get("email","")
        school = request.POST.get("school","")
        degree = request.POST.get("degree","")
        university = request.POST.get("university","")
        skill = request.POST.get("skill","")
        about_you = request.POST.get("about_you","")
        previous_work = request.POST.get("previous_work","")

        accept = Accept(name=name,phone=phone,email=email,school=school,degree=degree,university=university,skill=skill,about_you=about_you,previous_work=previous_work)
        accept.save()
    return render(request,"accept.html")

models.py

class profile(models.Model):
    name = models.CharField(max_length=255)
    phone = models.CharField(max_length=12)
    email = models.EmailField(max_length=100)
    school = models.CharField(max_length=100)
    degree = models.CharField(max_length=100)
    university = models.CharField(max_length=100)
    skill = models.TextField(max_length=1000)
    about_you = models.TextField(max_length=1000)
    previous_work = models.TextField(max_length=1000)

accept.html

{% csrf_token %} Имя Телефон Электронная почта Школа Степень Университет Навыки О вас Предыдущая работа Отправить введите код здесь

Вот полная трассировка ошибки enter image description here

Создаваемый вами Accept ссылается на имя вашего представления, поэтому вы пытаетесь создать представление со всеми этими kwargs, что, очевидно, не сработает.

Я думаю, что вы хотели создать экземпляр profile и написали Accept(..) вместо profile(..).

Я думаю, что проблема может быть в том, что вы вызываете Accept для регистрации профиля внутри функции Accept, так что в основном вы вызываете функцию, а не профиль объекта

Предлагаемые изменения:

def Accept(request):
    if request.method == "POST":
        name = request.POST.get("name","")
        phone = request.POST.get("phone","")
        email = request.POST.get("email","")
        school = request.POST.get("school","")
        degree = request.POST.get("degree","")
        university = request.POST.get("university","")
        skill = request.POST.get("skill","")
        about_you = request.POST.get("about_you","")
        previous_work = request.POST.get("previous_work","")

        # dont call the function but the object profile
        accept = profile(name=name,phone=phone,email=email,school=school,degree=degree,university=university,skill=skill,about_you=about_you,previous_work=previous_work)
        accept.save()
    return render(request,"accept.html")

Также в python существует определенная конвенция именования: Имя функции должно быть в нижнем регистре, в то время как класс обычно использует соглашение CapsWord: https://peps.python.org/pep-0008/#naming-conventions

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