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

Django模板生成Twitter Web Intent URL:为何未自动缩短为t.co?

关于Twitter Web Intent自动生成t.co短链接的问题

首先明确说:你的观点完全正确!Twitter的Web Intent确实会自动把你传入的url参数转换成t.co短链接,根本不需要你手动去做缩短操作——只要参数传递正确,Twitter后端会自动处理这一步。

那你哪里操作错了呢?看你的模板代码,主要问题出在参数拼接和编码的方式上:

  • 你把page.get_site.root_url和page.url分开做urlencode后再拼接,这可能导致完整URL的编码逻辑出错。正确的做法应该是先把完整的网站URL(根URL+页面URL)合并成一个字符串,再对整个字符串做一次urlencode,而不是分开编码后拼接。
  • 你手动用%26来分隔参数,但在Django模板的HTML属性里,应该直接用&(Django会自动帮你转义成&,符合HTML规范),手动写%26反而可能让Twitter无法正确识别参数分隔,导致url参数没有被正常解析。

给你两个修正后的模板写法参考:

方法1:用Django的urlencode过滤器处理整个参数字典(更推荐)

这种方式更干净,不容易出错:

{% with full_share_url=page.get_site.root_url|add:page.url %}
<a href="https://twitter.com/intent/tweet?{% urlencode text=block.value url=full_share_url via=pathtweets %}">
  分享到Twitter
</a>
{% endwith %}

方法2:手动拼接但修正编码和参数分隔

如果坚持手动拼接,要确保完整URL先合并再编码,用&分隔参数:

<a href="https://twitter.com/intent/tweet?text={{ block.value|urlencode }}&url={{ page.get_site.root_url|add:page.url|urlencode }}&via=pathtweets">
  分享到Twitter
</a>

修正后你可以再检查渲染后的URL:确保url参数是一个完整的、编码正确的页面URL,这样Twitter就能正确识别并自动生成t.co短链接了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:52:21