Автоматическая генерация электронной почты пользователя при создании профиля пользователя? - PullRequest
0 голосов
/ 14 сентября 2018

Я создаю приложение, используя django

Мой код выглядит следующим образом:

class Profile(models.Model):
    Name = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
    E_mail = models.EmailField(max_length=70)
    Phone_no = models.BigIntegerField()
    Skills = models.TextField()
    Image = models.ImageField(upload_to='user_images')

Я хочу автоматически генерировать электронную почту пользователя в профиле пользователя, который пользователь указал при регистрации.

Я использую модели django для регистрации и входа в систему и использую представления на основе классов для генерации своего профиля.

Кто-нибудь может мне помочь в этом?

Спасибо

1 Ответ

0 голосов
/ 21 сентября 2018

В этом случае вы можете использовать пользовательские контекстные процессоры Django для шаблона.

Создайте файл context_processors.py в вашей основной папке приложения, который будет содержать ваш пользовательский объект, например так:

def user(request):
    return {'user': {'email': request.user.email if request.user.is_authenticated else None}}

Затем в файле settings.py добавьте имя ваших контекстных процессоров в список context_processors, например:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'myapp.context_processors.user',  # This is our custom context processors
            ],
        },
    },
]

Теперь вы можете получить доступ к электронной почте пользователя во всех шаблонах с этим синтаксисом,{{ user.email }}

...