首页 > 解决方案 > Django - 跟随按钮功能不起作用

问题描述

我正在尝试创建一个类似于社交网站的项目,用户可以在其中互相关注。某人个人资料上的关注按钮将允许您自己的个人资料关注该用户。

目前,当我单击个人资料上的关注按钮时,没有任何反应。也没有错误。我很纠结该去哪里。任何帮助都非常感谢。

urls.py 的相关部分:

path("fol/<str:username>", views.fol, name="fol"),
path("following_list/<str:username>", views.following_list, 
name='following_list'),
path("profile/<str:username>", views.profile, name="profile"),

views.py - 用于以下功能:

def fol(request, username):
    if request.method == 'GET':
        currentuser = request.user
        profileuser = get_object_or_404(User, username=username)
        posts = Post.objects.filter(user=profileuser).order_by('id').reverse()
        follower = Follow.objects.filter(target=profileuser)
        following = Follow.objects.filter(follower=profileuser)

        following_each_other = Follow.objects.filter(follower=currentuser, 
        target=profileuser)
        totalfollower = len(follower)
        totalfollowing = len(following)

        paginator = Paginator(posts, 10)
        page_number = request.GET.get('page')
        page_obj = paginator.get_page(page_number)

        context = {
           'posts': posts.count(),
           'profileuser': profileuser,
           'follower': follower,
           'totalfollower': totalfollower,
           'following': following,
           'totalfollowing': totalfollowing,
           'followingEachOther': following_each_other
            }
        return render(request, "network/profile.html", context)
    else:
        currentuser = request.user
        profileuser = get_object_or_404(User, username=username)
        posts = Post.objects.filter(user=profileuser).order_by('id').reverse()
        following_each_other = Follow.objects.filter(follower=currentuser, 
        target=profileuser)

        paginator = Paginator(posts, 10)
        page_number = request.GET.get('page')
        page_obj = paginator.get_page(page_number)

        if not following_each_other:
            f = Follow.objects.create(target=profileuser, follower=currentuser)
            f.save()
            follower = Follow.objects.filter(target=profileuser)
            following = Follow.objects.filter(follower=profileuser)
            following_each_other = Follow.objects.filter(follower=request.user, 
            target=profileuser)
            totalfollower = len(follower)
            totalfollowing = len(following)

            context = {
                'posts': posts.count(),
                'profileuser': profileuser,
                'page_obj': page_obj,
                'follower': follower,
                'following': following,
                'totalfollowing': totalfollowing,
                'totalfollower': totalfollower,
                'followingEachOther': following_each_other
                }
            return render(request, "network/profile.html", context)
    
        else:
            following_each_other.delete()
            follower = Follow.objects.filter(target=profileuser)
            following = Follow.objects.filter(follower=profileuser)
            totalfollower = len(follower)
            totalfollowing = len(following)

            context = {
               'posts': posts.count(),
               'profileuser': profileuser,
               'page_obj': page_obj,
               'follower': follower,
               'following': following,
               'totalfollowing': totalfollowing,
               'totalfollower': totalfollower,
               'followingEachOther': following_each_other
            }
            return render(request, "network/profile.html", context)

个人资料页面的views.py函数:

def profile(request, username):
    if request.method == 'GET':
        currentuser = request.user
        profileuser = get_object_or_404(User, username=username)
        posts = 
        Post.objects.filter(username=profileuser).order_by('id').reverse()
        profile = User.objects.get(username=username)

        paginator = Paginator(posts, 10)
        page_number = request.GET.get('page', 1)
        page_obj = paginator.get_page(page_number)

        foo = Follow.objects.filter(target=profileuser)
        following = Follow.objects.filter(follower=profileuser)
        user1 = profile.username
        user2 = currentuser.username

        if profile.username == currentuser.username:
            return render(request, "profile.html", {
                'profile': profile,
                'profileuser': profileuser,
                'posts': posts,   
                'user1': user1,        
                'user2': user2,
                'page_obj': page_obj,
             })
        else:
            return render(request, "profile.html", {
                'profile': profile,
                'profileuser': profileuser,
                'posts': posts,  
                'user1': user1,        
                'user2': user2,
                'page_obj': page_obj,
             })
    else:
        return render(request, "network/index.html")

个人资料页面上的相关 html - 在花括号中没有出现:

This user has {{totalfollower}}  followers.
This user is following {{totalfollowing}}  accounts.

{% if user1 != user2 %}
<div class="pull-right">
<a href="{% url 'fol' username=profileuser.username %}"></a><input class="btn 
btn-primary" type="submit" value="Follow">
</div>

<div class="pull-right">
    <input class="btn btn-primary" type="submit" value="Unfollow">
 </div>
{% endif %}

标签: htmldjangodjango-viewsdjango-templates

解决方案


推荐阅读