python - 使用 Djoser 和 Django Rest Framework 激活帐户

标签 python django django-rest-framework djoser

我在我的项目中使用 Djoser 进行身份验证。 一直在努力添加电子邮件激活超过 4 天,但似乎未能很好地捕获它,因为文档对我来说有点难以理解。

这是我的代码 settings.py

#change auth model to custom model
AUTH_USER_MODEL = 'userauth.User'

#setting up email server
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'okumujustine01@gmail.com'
EMAIL_HOST_PASSWORD = 'codemanuzmaster'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'okumujustine01@gmail.com'

#djoser login settings
DJOSER = {
    'DOMAIN': 'localhost:8000',
    'SITE_NAME': 'net',
    'LOGIN_FIELD':'email',
    'USER_CREATE_PASSWORD_RETYPE':True,
    'ACTIVATION_URL': '#/users/activate/{uid}/{token}',
    'SEND_ACTIVATION_EMAIL': True,
    'SERIALIZERS':{
        'user_create':'userauth.serializers.UserCreateSerializer',
        'user':'userauth.serializers.UserCreateSerializer',
        'activation': 'djoser.email.ActivationEmail',
    }
}

这是我创建用户后收到的邮件

http://example.com/auth/users/activate/MQ/5c9-26bcab9e85e8a967731d

它显示 example.com 但我希望它将网址更改为 localhost:8000

您收到这封电子邮件是因为您需要在 example.com 上完成激活过程。

请到以下页面激活账户:

http://example.com/auth/users/activate/MQ/5c9-26bcab9e85e8a967731d

如果我手动将网址更改为

http://127.0.0.1:8000/users/activate/MQ/5c9-26bcab9e85e8a967731d

它不断返回

{
    "detail": "Authentication credentials were not provided."
}

我真的请求你们帮助我。

最佳答案

要回答您最初的问题(如何为激活网址使用不同的域),您需要从 Djoser 设置中删除 DOMAIN 和 SITE_NAME。示例:

DOMAIN = config('DOMAIN') #localhost:8000
SITE_NAME = config('SITE_NAME') #net

DJOSER = {
    'LOGIN_FIELD':'email',
    'USER_CREATE_PASSWORD_RETYPE':True,
    'ACTIVATION_URL': '#/users/activate/{uid}/{token}',
    'SEND_ACTIVATION_EMAIL': True,
    'SERIALIZERS':{
        'user_create':'userauth.serializers.UserCreateSerializer',
        'user':'userauth.serializers.UserCreateSerializer',
        'activation': 'djoser.email.ActivationEmail',
}

然后您应该在电子邮件中收到下一个链接:

http://localhost:8000/auth/users/activate/MQ/5c9-26bcab9e85e8a967731d

关于python - 使用 Djoser 和 Django Rest Framework 激活帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59335152/

相关文章:

python - 列表、文件和读取行

python - 如何在 Django 管理界面中获取谷歌地图位置坐标?

django Rest框架 - 嵌套序列化不包括嵌套对象字段

python - 在Python中从字符串中捕获多个数据点

python - SQLAlchemy PyODBC MS SQL Server 无 DSN 连接

python - 创建 Rsync GUI 以备份到远程服务器

python - ImportError at/No module named quickstart in django rest framework

python - 访问用户的电子邮件

python - scp 与带有私钥的子进程 python

django - 如何在 django rest 框架中设置嵌套对象?