我正在創建一個使用django的追隨者系統和取消關注系統。我已經實現了每一個代碼,似乎沒有任何錯誤,除了事實上,而不是最初的按鈕是否遵循它實際上是取消關注,如果我點擊取消關注沒有任何反應。下面是我的代碼django中的用戶追隨者系統
details.html
{% extends 'base.html' %}
{% load staticfiles %}
{% load thumbnail %}
{% block title %}{{ user.get_full_name }}{% endblock %}
{% block content %}
<h1>{{ user.get_full_name }}</h1> <div class="profile-info">
{% thumbnail user.profile.photo "180x180" crop="100%" as im %} <img src="{{ im.url }}" class="user-detail">
{% endthumbnail %} </div>
{% with total_followers=user.followers.count %} <span class="count">
<span class="total">{{ total_followers }}</span>
follower{{ total_followers|pluralize }} </span>
<a href="#" data-id="{{ user.id }}" data-action="{% if request.user in user.followers.all %}un{% endif %}follow" class="follow button">
{% if request.user not in user.followers.all %}
Follow
{% else %}
Unfollow
{% endif %}
</a>
<div id="post-list" class="image-container">
{% include "axle.html" with objects=user.posts_created.all %}
</div>
{% endwith %}
{% endblock %}
{% block domready %}
$('a.follow').click(function(e){
e.preventDefault();
$.post('{% url "user_follow" %}',
{
id: $(this).data('id'), action: $(this).data('action')
}, function(data){
if (data['status'] == 'ok') {
var previous_action = $('a.follow').data('action');
// toggle data-action $('a.follow').data('action',
previous_action == 'follow' ? 'unfollow' : 'follow'); // toggle link text
$('a.follow').text(
previous_action == 'follow' ? 'Unfollow' : 'Follow');
// update total followers
var previous_followers = parseInt(
$('span.count .total').text());
$('span.count .total').text(previous_action == 'follow' ? previous_followers + 1 : previous_followers - 1);
} }
); });
{% endblock %}
views.py
def user_detail(request, username):
user = get_object_or_404(User, username=username,is_active=True)
context = {
'section': 'people',
'user': user
}
template = 'user/detail.html'
return render(request, template, context)
模式
class Contact(models.Model):
"""docstring for Contact."""
user_from = models.ForeignKey(User, related_name='rel_from_set')
user_to = models.ForeignKey(User, related_name='rel_to_set')
created = models.DateTimeField(auto_now_add=True, db_index=True)
class Meta:
ordering = ('-created',)
def __str__(self):
return '{} follows {}'.format(self.user_from, self.user_to)
models.ManyToManyField('self', through=Contact,related_name='followers', symmetrical=False)
也許日e ManyToManyField的Monkey修補程序?
? Django的默認?我建議你重寫django的用戶模型(如何:https://docs.djangoproject.com/en/1.11/topics/auth/customizing/#extending-the-existing-user-model)並實現你的聯繫關係那裏。 此外,該模型補丁似乎對我來說完全尷尬。最好放在模型中。 –
請顯示您的用戶模型。 –
我正在使用django all-auth作爲我的身份驗證並使用django的默認用戶模型 – King