Как добавить больше 4-х значений в функцию create_user()?
Хочу добавить больше 4-х параметров при регистрации. Выдает ошибку: create_user() takes from 2 to 4 positional arguments but 6 were given
Вьюха
from django.shortcuts import redirect, render
from django.urls import reverse
from django.contrib.auth.models import User
from django.views.generic import TemplateView
class RegisterView(TemplateView):
template_name = "access/reg.html"
def dispatch(self, request, *args, **kwargs):
if request.method == 'POST':
name = request.POST.get('name')
surname = request.POST.get('surname')
email = request.POST.get('email')
password = request.POST.get('password')
password2 = request.POST.get('password2')
date = request.POST.get('date')
if password == password2:
User.objects.create_user(name, surname, email, password, date)
return redirect(reverse("login"))
return render(request, self.template_name)
шаблон
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
<title>Регистрация</title>
</head>
<body style="background-color: #EDEEF0;">
<div class="container-fluid" style="height: 50px; background-color: #E25C5B;">
<div class="container"><button type="button" class="btn" style="background-color: #EDEEF0;"><h4>DjiSoc <span class="badge" style="background-color: #DD595C; color: #EDEEF0;">2020</span></h4></button></div>
<div class="container" style="height: 800px; padding-top: 100px;">
<div class="head" style="width: 90%; height: 100%; background-color: #FFFFFF; border-radius: 4px; box-shadow: 0 0 5px rgba(0,0,0,0.5); padding: 50px; margin: auto;">
<button type="submit" class="btn" style="background-color: #E25C5B;"><a href="/" style="color: #FFFFFF; text-decoration: none;">На главную</a></button>
<h1 style="color: #E25C5B; text-align: center;">Регистрация</h1>
<form style="margin-top: 75px;" method="post">
{% csrf_token %}
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputName4">Имя</label>
<input type="text" name='name'class="form-control" id="inputName4">
</div>
<div class="form-group col-md-6">
<label for="inputSurname4">Фамилия</label>
<input type="text" name='surname'class="form-control" id="inputSurname4">
</div>
</div>
<div class="form-group">
<label for="inpuEmail1">Электронная почта</label>
<input type="email" name="email" class="form-control" id="inpuEmail1" placeholder="[email protected]">
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputPass">Пароль</label>
<input type="password" name="password" class="form-control" id="inputPass">
</div>
<div class="form-group col-md-6">
<label for="inputPass1">Подтвердите пароль</label>
<input type="password" name="password2" class="form-control" id="inputPass1">
</div>
<form>
<p>
<label for="localdate">Дата рождения: </label>
<input type="date" name="date" id="localdate" style="margin-left: 10px; margin-top: 30px; width: 300px; height: 45px; border-radius: 4px;" name="date"/>
</p>
</form>
<button type="submit" class="btn" style="background-color: #E25C5B; color: #FFFFFF; margin-left: 300px; margin-top: 100px;">Готово</button>
</form>
</div>
</div>
<footer class="container" style="height: 100px;">
</footer>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
Ответы (1 шт):
Автор решения: Sherlock
→ Ссылка
create_user ожидает только имя пользователя в качестве позиционного параметра. Все остальные данные должны быть переданы в качестве аргументов ключевых слов.
User.objects.create_user(
self.cleaned_data['name'],
surname=self.cleaned_data['surname'],
email=self.cleaned_data['email'],
password=self.cleaned_data['password']
date=self.cleaned_data['date']
)