I did a lot of attempts to create a following system. Who can describe in details how to implement this? My code shows a lot of errors. In AddFollower() and Remove follower() I get a profile I'm on and a current profile (my) and add or remove in database. But these functions don't work. Help me to find a solution, please
urls.py
urlpatterns = [
path('', PostListView.as_view(), name='blog-home'),
path('user/<str:username>/', GetUserProfile.as_view(), name='user-profile'),
path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
path('post/new/', PostCreateView.as_view(), name='post-create'),
path('post/<int:pk>/update/', PostUpdateView.as_view(), name='post-update'),
path('post/<int:pk>/delete/', PostDeleteView.as_view(), name='post-delete'),
path('about/', views.about, name='blog-about'),
path('post-like/<int:id>/', views.post_like, name='post-like'),
path('read-later/<int:id>/', views.read_later, name='read-later'),
path('read-later-list/<str:username>/', ReadLaterListView.as_view(), name='read-later-list'),
path('add-follower/<str:username>/', AddFollower.as_view(), name='add_follower'),
path('remove-follower/<str:username>/', RemoveFollower.as_view(), name='remove_follower')
views.py
class AddFollower(LoginRequiredMixin, View):
def post(self, request, *args, **kwargs):
user = get_object_or_404(User, username=self.kwargs.get('username'))
profile = Profile.objects.get(user=user)
profile.subscribers.add(request.user)
return redirect('user-profile', username=profile.user.username)
class RemoveFollower(LoginRequiredMixin, View):
def post(self, request, *args, **kwargs):
user = get_object_or_404(User, username=self.kwargs.get('username'))
profile = Profile.objects.get(user=user)
profile.subscribers.remove(request.user)
return redirect('user-profile', username=profile.user.username)
user_posts.html
{% if is_following %}
<form action="{% url 'remove_follower' user.username %}" method="POST">
{% csrf_token %}
<div class="buttons mt-3">
<button type="submit" class="btn btn-dark px-4 ms-3">Unfollow</button>
</div>
</form>
{% else %}
<form method="POST" action="{% url 'add_follower' user.username %}">
{% csrf_token %}
<div class="buttons mt-3">
<button type="submit" class="btn btn-dark px-4 ms-3">Follow</button>
</div>
</form>
{% endif %}