【问题标题】:How do I make two functions of a function based views communicate with each other in django?如何使基于函数的视图的两个函数在 django 中相互通信?
【发布时间】:2022-01-15 13:58:08
【问题描述】:

我是 Django 新手,正在从事一个项目。我必须在 Django 中传达视图的两个功能。

views.py

@login_required
def likepost(request,id):
    post = NewPost.objects.get(id = id)
    is_like = False
    for like in post.likepost.all():
        if like == request.user and request.method == "POST":
            is_like = True
            break
    
    if not is_like:
        post.likepost.add(request.user)
    
    else:
        post.likepost.remove(request.user)
    
    return JsonResponse({
        "is_like" : is_like,
    })

这是我想在索引函数中调用的likepage 函数。下面给出了索引函数。

def index(request):
    posts = NewPost.objects.all().order_by("-timestamp")
    page = Paginator(posts,3)
    page_req = request.GET.get('page')
    page_view = page.get_page(page_req)
    num = "a" * page_view.paginator.num_pages
    is_like = likepost(posts.id)
    
    if request.user.is_authenticated:
        if request.method == "POST":
            post = NewPostForm(request.POST)
            user = request.user
            timestamp = datetime.now()
            if post.is_valid:
                post = post.save(commit=False)
                postdata = NewPost(post=post,user=user,timestamp=timestamp)
                postdata.save()
                # return Response({"message" : "Post created successfully ????!"})

            return render(request,"network/index.html",{
                "post" : post,
                # "user" : user,
                # "posts" : posts,
                "timestamp" : timestamp,
                "page_view" : page_view,
                "num" : num,
                "is_like" : is_like,
            })
            # JsonResponse(posts, safe=False)

        else:
            post = NewPostForm()
            return render(request,"network/index.html",{
                "post" : post,
                "posts" : posts,
                "page_view" : page_view,
                "num" : num,
                "is_like" : is_like,
            })

    return render(request,"network/index.html",{
        "posts" : posts,
        "page_view" : page_view,
        "num" : num,
        "is_like" : is_like,
    })

虽然我的模型中有id 属性,但它给出了以下错误。

我该如何解决?我想做一个赞按钮。

【问题讨论】:

    标签: django-models django-views


    【解决方案1】:

    要解决这个问题,您只需将用户添加到 is_like = likepost(posts.user.id)。我认为您需要通过用户 ID 查询帖子,而不仅仅是 posts.id,所以希望它现在应该可以工作。

    def index(request):
        posts = NewPost.objects.all().order_by("-timestamp")
        page = Paginator(posts,3)
        page_req = request.GET.get('page')
        page_view = page.get_page(page_req)
        num = "a" * page_view.paginator.num_pages
        is_like = likepost(posts.user.id)
        
        if request.user.is_authenticated:
            if request.method == "POST":
                post = NewPostForm(request.POST)
                user = request.user
                timestamp = datetime.now()
                if post.is_valid:
                    post = post.save(commit=False)
                    postdata = NewPost(post=post,user=user,timestamp=timestamp)
                    postdata.save()
                    # return Response({"message" : "Post created successfully ?!"})
    
                return render(request,"network/index.html",{
                    "post" : post,
                    # "user" : user,
                    # "posts" : posts,
                    "timestamp" : timestamp,
                    "page_view" : page_view,
                    "num" : num,
                    "is_like" : is_like,
                })
                # JsonResponse(posts, safe=False)
    
            else:
                post = NewPostForm()
                return render(request,"network/index.html",{
                    "post" : post,
                    "posts" : posts,
                    "page_view" : page_view,
                    "num" : num,
                    "is_like" : is_like,
                })
    
        return render(request,"network/index.html",{
            "posts" : posts,
            "page_view" : page_view,
            "num" : num,
            "is_like" : is_like,
        })
    

    【讨论】:

      猜你喜欢
      • 2019-08-29
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 2021-01-24
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多