Django Allauth Электронное письмо с подтверждением/подтверждением не отправляется после регистрации

Я использую пользовательскую модель Custom, и до сих пор мне удавалось подключить ее к пакету allauth, расширяющему «SignupForm».

Кажется, все работает нормально, потому что я регистрируюсь, и информация о новой учетной записи находится в БД (таблица пользователей и таблица account_emailaddress), но электронная почта не отправляется.

вот как выглядит моя регистрационная форма

forms.py

class StudentSignUpForm(SignupForm): 

    @transaction.atomic
    def save(self, request):
        user = super(StudentSignUpForm, self).save(request)
        user.is_student = True
        user.save()
        student = StudentProfile.objects.create(user=user)
        return user

views.py

def student_profile_view(request):

    if request.method == 'POST':

        user_form = StudentSignUpForm(request.POST, prefix='UF')

        if user_form.is_valid():
            user_form.save(request)
            return redirect('/') 

    else: 
        user_form = StudentSignUpForm(prefix='UF')

    return render(request, 'registration/student-profile.html', {'user_form': user_form,})

Это работает для создания пользовательского пользователя, а также для создания пользователя с полной авторизацией, зарегистрированный адрес электронной почты отображается в «/admin/» в разделе account/emails_address, но письма с подтверждением не отправляются новым зарегистрированным пользователям.

Как я могу это исправить?? Любые идеи??


person CodeRed    schedule 27.05.2020    source источник


Ответы (2)


Чтобы отправить электронное письмо, вам необходимо настроить параметры электронной почты django.

Перейдите по ссылке, чтобы отправить электронное письмо и ссылка, чтобы узнать о настройках django для электронной почты

После сохранения профиля пользователя вы звоните

class StudentSignUpForm(SignupForm): 
    ........
    student = StudentProfile.objects.create(user=user)
    send_mail(
        'Subject here',
        'Here is the message.',
        '[email protected]',
        ['[email protected]'],
        fail_silently=False,
    )
person Saiful Azad    schedule 27.05.2020
comment
Привет, я использую sendgrid в качестве сервера электронной почты, и он работает хорошо. Самое смешное, что если я использую встроенную форму регистрации allauth, я получаю письмо с подтверждением по электронной почте, но когда я использую свою пользовательскую форму пользователя, письма не отправляются... Мне нужно, чтобы allauth автоматически отправлял письмо с подтверждением электронной почты, когда пользователь подписывает- с моей пользовательской регистрационной формой. - person CodeRed; 27.05.2020

Я починил это. Проблема была с представлениями, все, что мне нужно было сделать, это перейти на представление на основе классов и использовать представление регистрации allauth.

В views.py

from allauth.account.views import SignupView


class student_profile_view(SignupView):

    # The referenced HTML content can be copied from the signup.html
    # in the django-allauth template folder

    template_name = 'registration/student-profile.html'

    # the previously created form class
    form_class = StudentSignUpForm

затем в моем пользовательском шаблоне регистрации я просто передал «форму», чтобы отобразить регистрационную форму.

в urls.py

    path('register/student/', student_profile_view.as_view(), name='intern_register'),

person CodeRed    schedule 28.05.2020