python - 使用 Djoser 和 Django Rest Framework 激活帐户
问题描述
我在我的项目中使用 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 ,但我希望它将 web url 更改为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."
}
我真的请求你们帮助我。
解决方案
要回答您的原始问题(如何为激活 url 使用不同的域),您需要从 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-3.x - Python将货币字符串拆分为货币代码和金额
- python - 用熊猫数据框中的最后一个非空值替换空值
- c# - 如何最大化excel工作表列限制?
- blazor - 更改环境后,Blazor 中不会自动生成作用域 CSS
- python - 脚本正在生成重复输出
- css - 有没有办法强制 iOS Safari 横向打印?
- javascript - React Native - 无头浏览器自动化?
- vue.js - 属性或方法未在实例上定义,但在渲染期间被引用。确保这个属性是反应式的 vue-js
- c++ - Main函数属于C++中的哪个类
- angular - PrimeNG p-chips - 如果有特殊字符,如何删除?