首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停止djoser向PASSWORD_RESET_CONFIRM_URL中的前端url添加API url

停止djoser向PASSWORD_RESET_CONFIRM_URL中的前端url添加API url
EN

Stack Overflow用户
提问于 2022-03-31 13:44:57
回答 1查看 230关注 0票数 1

我有一个DRF,使用djoser来处理密码重置。除PASSWORD_RESET_CONFIRM_URL外,密码重置工作流运行良好。

当我在Djoser的那个设置中设置我的前端页面URL时,它一直将API连接到前端页面URL。我怎么才能阻止

关于更多的上下文,这里是我的Djoser设置,显示了我为PASSWORD_RESET_CONFIRM_URL设置的URL

代码语言:javascript
复制
DJOSER = {
    'PASSWORD_RESET_CONFIRM_URL': 'http://localhost:3000/auth/confirm-password-reset/{uid}/{token}',
    'ACTIVATION_URL': '#/activate/{uid}/{token}',
    'SEND_ACTIVATION_EMAIL': True,
    'PASSWORD_RESET_SHOW_EMAIL_NOT_FOUND': True,
    'PASSWORD_RESET_CONFIRM_RETYPE': True,
    'SERIALIZERS': {
        'password_reset': 'djoser.serializers.SendEmailResetSerializer',
        'password_reset_confirm': 'djoser.serializers.PasswordResetConfirmSerializer',
        'password_reset_confirm_retype': 'djoser.serializers.PasswordResetConfirmRetypeSerializer',
        'set_password': 'djoser.serializers.SetPasswordSerializer',
        'set_password_retype': 'djoser.serializers.SetPasswordRetypeSerializer',
        'current_user': 'djoser.serializers.UserSerializer',
    },
    'PERMISSIONS': {

    }
}

这是我在电子邮件中收到的URL

如您所见,API已添加到我设置的前端http://127.0.0.1:8000中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-31 16:37:25

有两种方法可以显式地设置新域名:

  1. 添加DOMAINSITE_NAME 到Django设置
  2. 使用Django站点框架并在那里设置域名

站点通常并不有用,所以使用#1,除非其他东西失败了。唯一的其他选项是覆盖所有电子邮件模板,以便您可以指定完整的url。

  1. Djoser只支持路径/片段,不支持完整urls。
  2. 使用{{ protocol }}://{{ domain }}/{{ url|safe }}创建链接
  3. 一个名为templated_mail的包用于发送这些电子邮件
  4. 该包设置protocoldomainsite_name

在电子邮件模板中使用的设置变量的代码是:

代码语言:javascript
复制
site = get_current_site(self.request)
domain = context.get('domain') or (
    getattr(settings, 'DOMAIN', '') or site.domain
)
protocol = context.get('protocol') or (
    'https' if self.request.is_secure() else 'http'
)
site_name = context.get('site_name') or (
    getattr(settings, 'SITE_NAME', '') or site.name
)

httphttps的决定是为您而做的,但是由于它们几乎总是相同的,这在实践中可能不是一个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71693624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档