如何访问模板中已显示的特定对象?

时间:2016-09-05 05:49:48

标签: python django

我正在创建一个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"),

0 个答案:

没有答案