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