django-allauth:如何修改邮件确认链接?

9 投票
2 回答
2683 浏览
提问于 2025-04-18 09:11

我在8001端口上运行Django,而nginx在80端口上处理网页服务。nginx负责把一些视图和REST API请求转发给Django。我使用django-allauth来处理用户注册和认证。

当新用户注册时,django-allauth会给用户发送一封邮件,里面有一个链接让他们点击。因为Django是在8001端口上运行的,所以这个链接看起来像是http://machine-hostname:8001/accounts/confirm-email/xxxxxxxxxxxxxx

我该怎么做才能让这个链接看起来像http://www.example.com/accounts/confirm-email/xxxxxxxx呢?

谢谢!

2 个回答

2

我也遇到了同样的问题,发现 ferrangb 的解决方案对发出的 allauth 邮件没有效果。mr_tron 的回答让我走了一半的路,但我还需要做一点额外的工作:

1) 在 nginx 的配置文件中,在 options proxy_pass 之前添加

proxy_set_header Host $http_host

2) 在 settings.py 文件中,把你的域名添加到 ALLOWED_HOSTS 里。我还添加了我域名的 www 版本,因为我两个地址都有流量。

ALLOWED_HOSTS = ['127.0.0.1', 'example.com', 'www.example.com']

当然,别忘了重启 nginx 和 gunicorn,或者其他正在服务你 Django 的程序。只做第一步而不做第二步的话,所有访问网站的请求都会立刻返回 400 错误(除非在 settings.py 中设置 DEBUG = True)。

7

Django 从 HTTP 头部获取主机名和端口。 在你的 nginx 配置中,在 proxy_pass 选项之前添加 proxy_set_header Host $http_host;

撰写回答