You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django在本地或PythonAnywhere生产环境创建用户的密码链接及工作流问题

解决方案

链接域名异常问题修复

你遇到的密码设置链接域名随运行环境变化的问题,根源是使用了request.build_absolute_uri()方法,该方法会读取当前服务接收请求的域名来生成完整链接,因此本地运行时会生成本地IP的链接。

你可以通过调整链接生成逻辑解决该问题,不需要限定只能在生产环境创建用户:

  • 在Django配置文件中新增固定的生产站点域名配置,示例如下:
    生产环境配置文件添加:PRODUCTION_SITE_DOMAIN = "https://你的正式站点域名"
    本地开发环境如果需要测试链接功能,可配置为本地服务地址:PRODUCTION_SITE_DOMAIN = "http://127.0.0.1:8000"
  • 修改原有的链接生成代码,直接用配置的域名拼接路径,不再依赖request对象的host属性:
from django.conf import settings

uid = urlsafe_base64_encode(force_bytes(user.pk))
token =  default_token_generator.make_token(user)
reset_view = reverse('password_reset_confirm', args=[uid, token])
# 用配置的站点域名拼接,不受当前运行环境影响
url = f"{settings.PRODUCTION_SITE_DOMAIN}{reset_view}"

set_password_form  = PasswordResetForm({'email':email})
assert set_password_form.is_valid()
set_password_form.save(
    request=request,
    from_email="email",
    subject_template_name='accounts/welcome_email_subject.txt',
    email_template_name="accounts/welcome_email_template.html",
    html_email_template_name="accounts/welcome_email_template.html",
    extra_email_context = {'url':url , 'username':username,"name":name}
)

修改完成后,只要把生产环境的域名配置正确,不管你在本地还是生产环境创建用户,发出的链接都是指向生产环境的可访问地址。

生产用户数据无需同步到本地

生产环境和本地开发环境使用独立的数据库,日常开发过程中你不需要用到真实的生产用户数据,本地自行创建测试用户即可满足开发调试需求。只有当需要排查特定生产用户的问题时,才需要单独导出对应数据到本地,不需要每次创建生产用户就做跨环境数据同步操作。

内容的提问来源于stack exchange,提问作者Abdulrahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:00:03