Django |从模板中的列表触发函数

时间:2016-04-21 01:35:16

标签: django django-models django-forms django-templates django-views

我正在努力制作像Newsfeed这样的Facebook。 我有Post,其中包含所有帖子。从视图发送后,我将帖子加载到{% for p in posts %}的模板,每个帖子我添加2个按钮(分享,像)和输入(评论)。

我怎么知道哪些被点击了所以我可以将post.id发送回视图,包括名称和值,并触发一个函数来处理它们在数据库中?

我想知道点击输入后是什么,它包含了什么以及它属于哪个帖子。

1 个答案:

答案 0 :(得分:0)

我接触到的方式如下:

我会有特定的观点来处理共享和类似的功能,我宁愿将它们作为两个单独的视图。对于他们你然后创建网址,绝对你也将提供帖子标识符作为这个网址的参数。

例如:

class LikePost(View):
    def post(self, request, post_id, *args, **kwargs):
        code

对于此课程,您可以使用^/post/(?P<post_id>\d+)/$等网址。

现在,为了简化Post模型类,您可以编写一个模型方法,为post实例返回LikePost视图的URL。

这样的事情:

def like_post_url(self):
     return reverse('appname:reversename-for-url', args=(self.id,))

所以现在当您在模板中循环帖子时,您可以简单地将此URL指定为用于按钮的锚标记中的href值。因此,每个按钮都有自己的分享网址,也可以用于输入。

我认为这应该清楚说明如何进行简单化。