【问题标题】:Auto-generating user email when creating user profile?创建用户个人资料时自动生成用户电子邮件?
【发布时间】:2019-02-18 23:37:36
【问题描述】:

我正在使用 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 身份验证模型进行注册和登录,并且我正在使用基于类的视图来生成我的个人资料。

有人可以帮我吗?

谢谢

【问题讨论】:

  • 我不明白您的说法,在用户注册时提供的用户个人资料中自动生成用户电子邮件。您的意思是用户在注册过程中不必提供他的电子邮件,系统会自动生成电子邮件并分配给用户?
  • 不,我实际上不是那个意思...我的意思是当用户注册时,他/她会提供一些电子邮件来完成注册过程...我想获得用户提供的电子邮件在我的 django 项目的每一页注册期间...@SazzadurRahman
  • 我在问题中提到的模型不适用于我的注册页面...
  • 那你为什么不只是在数据库中查询需要它的页面中的电子邮件。或者您希望它成为一种不需要每次都显式查询的全局变量?
  • 我想要这样,例如,如果我们想获得用户名,我们只需要在我们的模板中执行 {{ user.get_username }} ...对于电子邮件还有其他类似的方法吗? ??

标签: python django django-models django-forms django-class-based-views


【解决方案1】:

对于这种情况,您可以利用 Django 的 custom context processors 作为模板。

在您的主应用文件夹中创建一个文件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 }}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多