Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅为用户_1的所有图像显示一个like按钮_Python_Django_Django Views - Fatal编程技术网

Python 仅为用户_1的所有图像显示一个like按钮

Python 仅为用户_1的所有图像显示一个like按钮,python,django,django-views,Python,Django,Django Views,我正在构建一个图像库WebApp,我试图为特定用户上传的所有图像只显示一个like按钮 但它为每个用户(用户1)的图像显示like按钮。但我试着只显示像按钮 models.py class Galler(modyels.Model): post_owner = models.ForeignKey(User,default='',null=True,on_delete = models.CASCADE) likes = models.ManyToManyField(User, re

我正在构建一个图像库WebApp,我试图为特定用户上传的所有图像只显示一个
like按钮

但它为每个用户(用户1)的图像显示
like按钮
。但我试着只显示像按钮

models.py

class Galler(modyels.Model):
    post_owner = models.ForeignKey(User,default='',null=True,on_delete = models.CASCADE)
    likes = models.ManyToManyField(User, related_name='gallery_like', blank=True)
views.py

def gallery_like_dislike(request, post_id):
    post = get_object_or_404(Post, pk=post_id)
    # Like
    if request.GET.get('submit') == 'like':
        if request.user in post.dislikes.all():
            post.dislikes.remove(request.user)
            post.likes.add(request.user)
            return JsonResponse({'action': 'undislike_and_like'})
        elif request.user in post.likes.all():
            post.likes.remove(request.user)
            return JsonResponse({'action': 'unlike'})
        else:
            post.likes.add(request.user)
            return JsonResponse({'action': 'like_only'})
template.html

{% for video in gallery %}

                <div class="card-footer">
                    <form method="GET" class="likeForm d-inline" action="{% url 'mains:gallery_like_dislike' video.id %}"
                        data-pk="{{ video.id }}">
                            <span id="id_likes{{video.id}}">
                                {% if user in video.likes.all %}
                                <p style="color:#065FD4;display: inline">{{video.likes.count}}</p>
                                {% else %}
                                <p style="color:black;display: inline">{{video.likes.count}}</p>
                                {% endif %}
                            </span><button name='submit' type='submit' value="like"><i onclick="myFunction(this)" class="fa fa-thumbs-up"></i>Like</button>
                    </form>

{% endfor %}
{%用于gallery%%中的视频
{%if用户在video.likes.all%}

{{{video.likes.count}

{%else%}

{{{video.likes.count}

{%endif%} 喜欢 {%endfor%}
假设
user_1
发布了6张图片,下面的代码显示了6个相似的按钮,但我试图为所有图片只显示一个相似的按钮

我不知道,我该怎么做


任何帮助都将不胜感激。

在您的
模板.html
中,您在
for
循环中包含了like按钮-like按钮将被复制为用户拥有的图像的倍。而不是这样做,你应该像按钮一样移动到
for
循环之外,你只会得到一个像按钮-简单地说,你应该只用于渲染视频项目&将表单移动到循环之外


但问题是,您的视图等待post/video id检索帖子,并在帖子喜欢/不喜欢中添加用户。您应该通过自动检索每个用户的视频/帖子对象来覆盖此功能。

您完全正确,但是如果我从“链接”或“喜欢”按钮中删除post.id,django将如何计算喜欢的次数呢?不确定视频和帖子是否相同。如果在您的数据模型中,post包含多个视频-然后您将
post\u id
传递给请求并增加
post
models
like\u count
。但是,如果每个视频都包含
like_count
字段,那么,我想您应该为每个视频复制like按钮?