我有一个 Django 项目,它为用户提供了将用户帐户与 Twitter 和 Facebook 等社交网络帐户相关联的可能性。这适用于 Django Social Auth,它基本上提供了一个标签来了解当前用户是否已经关联了帐户。它允许以下代码相应地显示 URL:
<fieldset id="social_associations" class="">
<legend>Social Associations</legend>
{% for key, value in social_auth.items %}
<img src="/static/img/{{ key }}_icon.png" alt="{{ key }}" width="25" height="25" />
{% if value %}
<a href="/social/disconnect/{{ key }}">Disconnect from {{ key }}</a>
{% else %}
<a href="/social/login/{{ key }}">Associate your account to {{ key }}</a>
{% endif %}
<br />
{% endfor %}
</fieldset>
这是 Django 模板代码,执行时将给出以下 html(当然,显示的 hrefs 会根据用户的个人资料而变化,如果帐户与社交网络相关联,这里我会同时显示连接(用于 Facebook)和断开(对于 Twitter)URL):
<fieldset id="social_associations" class="">
<legend>Social Associations</legend>
<img width="25" height="25" alt="twitter" src="/static/img/twitter_icon.png">
<a href="/social/disconnect/twitter">Disconnect from twitter</a>
<br>
<img width="25" height="25" alt="facebook" src="/static/img/facebook_icon.png">
<a href="/social/login/facebook">Associate your account to facebook</a>
<br>
</fieldset>
这工作正常,但有各种缺点。首先,单击时,链接将通过打开关联/断开页面失去当前导航。这可以通过不打开它们来解决,如果存在的话,只需用 javascript 调用 GET(我记得用 javascript 调用 POST 来发送一些数据,GET 也必须是可能的?)。然后另一个缺点是点击时链接不会自动更新,必须重新加载页面。这可以通过更改 href 来解决,如果它是 'associate' 则显示 'disconnect',如果它是 'disconnect' 则显示 'associate' 并切换 URL。