我有一个名为“电子邮件选定成员”的Django管理员操作。检查一些成员并单击“Go”按钮,打开用户的邮件程序。已预先输入所选成员的电子邮件。
这是由Django HttpResponseRedirect(uri)工作的,其中uri是“mailto:email1,email2 .. 其中地址email1,email2 ...在服务器上查找。
唯一的问题是浏览器会重定向到空白页面以及打开客户端邮件程序。
有什么方法可以避免这种情况吗?
- 彼得
答案 0 :(得分:2)
这个问题有点老了,但我刚刚完成了这个问题,我想我可以帮助任何人寻找未来的答案。
我遇到了这个问题,因为我正在构建的网站有一个内置的跟踪系统,可以跟踪自托管广告的出站链接的网址。如果我不重定向,则没有办法(不改变它的实现方式)来跟踪点击,因为我没有使用API或任何东西。
简单的解决方法是做你做的事情,发回一个内容为元标记的HttpResponse()
<meta http-equiv="refresh" content="0;url=mailto:youremail@test.com" />
这会导致页面在加载时刷新,从而触发mailto:
操作。
现在我们只剩下一个打开的窗口,但我们无法使用Javascript的window.close()
方法关闭窗口。但我相信this solution应该有用。刷新成功后调用Javascript函数。
不幸的是,我没有对此进行测试,但这两种方法应该完成mailto:
重定向,不会留下空白窗口/标签。
希望这有帮助!
答案 1 :(得分:1)
不要使用HttpResponseRedirect。只需将mailto:line设为链接即可。 <a href="mailto:email1...">Email selected members</a>
答案 2 :(得分:0)
我认为不可能。 RFC 2616说重新302重定向:
临时URI应该由。给出 响应中的“位置”字段。 除非请求方法是HEAD, 响应的实体应该 包含一个简短的超文本注释 指向新URI的超链接
所以我看到的空白页是(非常)短的超文本注释。浏览器获取重定向指令,弹出带有重定向消息的临时页面,然后检索重定向的URL。但是使用mailto:URL,临时页面显然仍然存在。