Я хотел бы разработать процесс регистрации, при котором пользователь заполняет форму регистрации, получает электронное письмо с подробным описанием следующего шага (-ов). Пользователь должен оставаться неактивным, пока я не войду в систему как администратор и не активирую профиль пользователя.
Это то, что у меня есть в моем views.py
(teachers.py
):
class TeacherSignUpView(CreateView):
model = User
form_class = TeacherSignUpForm
template_name = 'registration/signup_form.html'
def get_context_data(self, **kwargs):
kwargs['user_type'] = 'teacher'
return super().get_context_data(**kwargs)
def form_valid(self, form, request):
user = form.save()
# user.set_password(form.cl)
login(self.request, user)
username = form.cleaned_data.get('first_name')
email = form.cleaned_data.get('email')
htmly = get_template('classroom/teachers/email.html')
d = {'username': username}
subject, from_email, to = 'Welcome to GradientBoost', 'emmanuel@thegradientboost.com', email
html_content = htmly.render(d)
msg = EmailMultiAlternatives(subject, html_content, from_email, [to])
msg.attach_alternative(html_content, 'text/html')
msg.send()
if request.user.is_activated:
return redirect('teachers:app-instructor-dashboard')
else:
return redirect('teachers:notyet')
models.py
class User(AbstractUser):
is_student = models.BooleanField(default=False)
is_teacher = models.BooleanField(default=False)
is_activated = models.BooleanField(default=False)
и classroom.py
(просмотры для домашней страницы, о странице et c):
#redirects after signup
def home(request):
if request.user.is_authenticated and request.user.is_activated:
if request.user.is_teacher:
return redirect('teachers:app-instructor-dashboard')
elif request.user.is_student:
return redirect('students:app-student-dashboard')
return render(request, 'classroom/home.html')
#about us page
def about(request):
return render(request, 'classroom/about-us.html')
#courses page
def courses(request):
return render(request, 'classroom/courses.html')
#course details
def course_details(request):
return render(request, 'classroom/course-details.html')
Однако, когда я пытаюсь зарегистрироваться, я получаю сообщение об ошибке:
TypeError at /accounts/signup/teacher/
form_valid() missing 1 required positional argument: 'request'