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

Google Cloud上Django重置密码报OSError[101]网络不可达求助

Django云端重置密码功能触发网络不可达错误解决方案

问题现象

在Google Cloud部署的Django项目中,使用内置密码重置功能时云端触发如下错误:

OSError at /en/reset_password/
[Errno 101] Network is unreachable
Request Method: POST
Request URL:    http://04.198.88.75:8000/en/reset_password/
Django Version: 5.0.3
Exception Type: OSError
Exception Value:    
[Errno 101] Network is unreachable
Exception Location: /usr/lib/python3.10/socket.py, line 833, in create_connection
Raised during:  django.contrib.auth.views.PasswordResetView
Python Executable:  /home/rsa-key-20240516/env/SlangID/bin/python
Python Version: 3.10.12
Python Path:    
['/var/www/html/SlangID/src',
 '/usr/lib/python310.zip',
 '/usr/lib/python3.10',
 '/usr/lib/python3.10/lib-dynload',
 '/home/rsa-key-20240516/env/SlangID/lib/python3.10/site-packages']
Server time:    Sun, 02 Jun 2024 11:55:50 +0000

本地环境功能正常,已添加允许SMTP连接的防火墙规则,ping 8.8.8.8、telnet smtp.gmail.com 587测试均成功,但通过Django shell查看EMAIL_PORT为默认值25,而settings.py中误写为EMAIL_POST=587。

相关代码

密码重置URL配置

from django.contrib.auth import views as auth_views

# Forgot Password Paths
path('reset_password/', auth_views.PasswordResetView.as_view(
        template_name='forgot_pass/change_password.html',
        success_url=reverse_lazy('password_reset_done'),
    ), 
    name="password_reset"
), #1
path('reset_password/done/', auth_views.PasswordResetDoneView.as_view(template_name='forgot_pass/sent_email.html'), name="password_reset_done"), #2
path('reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(
        template_name='forgot_pass/reset_pass.html',
        success_url=reverse_lazy('password_reset_complete'),
    ),
    name="password_reset_confirm"
), #3
path('reset_password_complete/', auth_views.PasswordResetCompleteView.as_view(
        template_name='forgot_pass/complete_pass.html',
    ), 
    name="password_reset_complete"
), #4

邮件配置(错误版本)

EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_POST = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER ='sussy@gmail.com'
EMAIL_HOST_PASSWORD ='aaaa aaaa aaaa aaaa'

解决方案

  • 修正配置拼写错误:将settings.py中的EMAIL_POST=587修改为正确的EMAIL_PORT=587
  • 重启应用:重启Django服务或应用进程,确保新配置生效
  • 验证配置:进入Django shell执行以下命令确认端口设置正确:
    from django.conf import settings
    print(settings.EMAIL_PORT)  # 应输出587
    
  • Gmail SMTP额外检查:若使用Gmail作为邮件服务器,账号开启两步验证需使用应用专用密码替代普通密码;未开启两步验证则需开启「不太安全的应用访问」(或通过Google Workspace配置应用权限)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:17:03