0

我有一个 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。

4

1 回答 1

0

不是最好的方法……</h2>

……但速度很快(使用 jQuery)。您应该能够通过创建例如相应的 ajax 视图来改进它。

(未经测试的代码,但给出一个想法)

$('a', '#social_associations').live('click', function(e){
    e.preventDefault();
    $('#social_associations').load($(this).attr('href') + ' #social_associations');
});

于 2012-05-08T08:50:58.803 回答