Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.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 Django-如何在html的for循环中获得相应的模型对象?_Python_Html_Django_Django Models - Fatal编程技术网

Python Django-如何在html的for循环中获得相应的模型对象?

Python Django-如何在html的for循环中获得相应的模型对象?,python,html,django,django-models,Python,Html,Django,Django Models,我正在尝试创建一个简单的django网站,在这里任何用户都可以评级和创建帖子。如本django教程()所示,您可以使用for循环在html中显示所有模型对象。在我的例子中,每个对象都将显示一个喜欢和不喜欢按钮,因此人们可以对帖子进行评分。我的问题是:如何知道哪个对象属于哪个喜欢/不喜欢按钮,以便可以为该特定对象更改相应的模型字段?谢谢你的回答 models.py from django.db import models # Create your models here. class Pos

我正在尝试创建一个简单的django网站,在这里任何用户都可以评级和创建帖子。如本django教程()所示,您可以使用for循环在html中显示所有模型对象。在我的例子中,每个对象都将显示一个喜欢和不喜欢按钮,因此人们可以对帖子进行评分。我的问题是:如何知道哪个对象属于哪个喜欢/不喜欢按钮,以便可以为该特定对象更改相应的模型字段?谢谢你的回答

models.py

from django.db import models

# Create your models here.

class Post(models.Model):
    post_text = models.CharField(max_length=500)
    pub_date = models.DateTimeField("date published")
    likes = models.IntegerField(default=0)
    dislikes = models.IntegerField(default=0)
    def __str__(self):
        return self.post_text
index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>AllPosts</title>
</head>
<body>
{% if post_list %}
<ul>
    {% for post in post_list %}
    <li>{{post.post_text}}</li>
    <p>This post has {{post.likes}} likes and {{post.dislikes}} dislikes.</p>
    <br>Leave a <button type="button" method="LIKE">Like</button> or a <button type="button" method="DISLIKE">Dislike</button>!</p>
    {% endfor %}

</ul>
<h2>If you want to create a post yourself, <a href="{% url 'create' %}">click here.</a></h2>
{% else %}
<h1>There are no posts yet...</h1>
{% endif %}


</body>
</html>

为了使按钮正常工作,它们需要位于表单元素中,并且必须是
type=“submit”
,否则它们在单击时不会执行任何操作。要确定单击了哪个按钮,然后可以将
方法
属性替换为
name=“like”
name=“厌恶”
。然后,可以通过将按钮的值设置为post ID来引用相关post

下面是应该执行此操作的代码示例。我删掉了代码中一些不相关的部分。(注意:我还没有对此进行测试,因此它可能无法完美工作)

index.html
UL元素:

<ul>
    {% for post in post_list %}
    <li>
        <span>{{post.post_text}}</span><br>
        <p>This post has {{post.likes}} likes and {{post.dislikes}} dislikes.</p>
        <form method="post">
            <p>
                Leave a <button type="submit" name="like" value="{{post.id}}">Like</button>
                or a <button type="submit" name="dislike" value="{{post.id}}">Dislike</button>!
            </p>
        </form>
    </li>
    {% endfor %}
</ul>
我希望这有帮助:)

<ul>
    {% for post in post_list %}
    <li>
        <span>{{post.post_text}}</span><br>
        <p>This post has {{post.likes}} likes and {{post.dislikes}} dislikes.</p>
        <form method="post">
            <p>
                Leave a <button type="submit" name="like" value="{{post.id}}">Like</button>
                or a <button type="submit" name="dislike" value="{{post.id}}">Dislike</button>!
            </p>
        </form>
    </li>
    {% endfor %}
</ul>
def index(request):
    if request.method == 'POST':
        like = request.POST.get('like')
        dislike = request.POST.get('dislike')
        if like:
            # Handle liked post
            # `like` is equal to the post ID
        else if dislike:
            # Handle disliked post
            # `dislike` is equal to the post ID
        else:
            # No action requested
    else:
        post_list = Post.objects.order_by('-pub_date')
        template = loader.get_template('post/index.html')
        context = {'post_list': post_list, }
        return HttpResponse(template.render(context, request))