我正在创建一个django视图,它可以完成喜欢图片的操作。但是,我遇到的问题是我似乎无法访问用户喜欢的特定图片的ID。我试图通过url模式来做到这一点,但是我得到了错误" like_photo()接受了2个参数给出了#34;在like_photo视图中传递feedclass_id时。话虽如此,我宁愿在不更改网址的情况下处理信息。我也收到了错误" get()返回了多个FeedClas - 它返回了9"!例如,当pk变为1时。用户已经上传了9张照片。所以主要的问题是,当点击提交按钮时,如何使用此代码更新每张照片的相似内容。 我的代码如下。
class FeedClas(models.Model):
image = models.FileField(upload_to='folder')
title = models.CharField(max_length=200, blank=True)
likes = models.IntegerField(default=0)
user_posted = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name="phot"
)
num_comments = models.IntegerField(default=0)
date_pub = models.DateTimeField(auto_now_add=True)
is_liked = models.BooleanField(default=False)
这是我的观点:
def like_photo(request):
user = request.user.id
#get all photos that belong to this user
photos = Feedclas.objects.get(user_posted_id=user)
photo = Feedclas.objects.get(pk="here is where I am having the trouble")
if photo.is_liked == False:
#once user clicks like, boolean field changes value to true,
#so they do not like same picture twice
photo.is_liked = True
photo.likes += 1
photo.save()
return HttpResponseRedirect(reverse('appname:account', args=(photo)))
#if already liked do not change total likes
elif photo.is_liked == True:
photo.likes += 0
return HttpResponseRedirect(reverse('appname:account', args=(photo)))
TEMPLATE:
通过for循环访问每个照片实例。这里的想法是,当我们提交表单时,我们有一个空心,因为喜欢是假的,但一旦它变为真,则else语句运行,我们显示一个完整的心。
{% if photo.is_liked == False %}
<form action= "{% url 'appname:like' %}" method="POST">
{% csrf_token %}
<button type ="submit" class="glyphicon glyphicon-heart-empty"></button>
</form>
{% else %}
<button type ="submit" class="glyphicon glyphicon-heart-empty"></button>
{% endif %}
网址格式: 我给这个视图提供了与主帐户视图相同的URL,但是使用了不同的名称和视图功能来处理。 /主/帐户
url(r'^account/$', views.account, name="account"),
/ URL /到/工作/与
url(r'^account/$', views.like_photo, name="like"),