我有一个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更改为显示'disconnect'(如果它是'associate')和'associate'(如果它是'disconnect')并切换URL来解决。
答案 0 :(得分:0)
...但速度很快(使用jQuery)。您应该能够通过创建例如相应的ajax视图来改进它。
(未经测试的代码,但要提出想法)
$('a', '#social_associations').live('click', function(e){
e.preventDefault();
$('#social_associations').load($(this).attr('href') + ' #social_associations');
});