所以,我有一个带有博客文章的小型博客应用程序(这里是 django 新手),并且我希望对这些项目中的每一个都包括一个“评级”(类似于 stackoflow 上的向上/向下)。所以,我拥有的是 ListView 中基于 ajax 的 GET - 但我现在意识到我需要 POST 来“修改”这个评级数据。我一直在寻找从 django ListView 发布数据,但我无法看到如何做到这一点。当前的 GET 代码是所有博客文章(分页)的列表视图,如下所示:
#views.py
class AwesomeDisplayListView(JSONResponseMixin,ListView):
model = blogposts
template_name = "awesome_list.html"
paginate_by = '15'
context_object_name = "searchres"
def get_context_data(self, **kwargs):
print "this is get_context_data"
context = super(SearchDisplayListView, self).get_context_data(**kwargs)
q = self.request.GET.get('q')
context['searchq'] = q
return context
def get_queryset(self):
print "this is get_queryset"
# get some queryset
return queryset
def render_to_response(self, context):
if self.request.is_ajax():
obj = {'name':'ajax', 'birthday':'may'}
return JSONResponseMixin.render_to_response(self, obj)
else:
return ListView.render_to_response(self, context)
上面的代码可以很好地将数据(“obj”)获取到模板中,并且我能够呈现博客文章和 GET ajax,但是,我想做的是发布数据,以便:[1] 评级是从当前值增加 1 [2] 特定操作(点击投票),需要 login_required。
我想知道是否有人可以指出我正确的方向来做到这一点。我已经用谷歌搜索了这个问题,人们似乎建议组合 Mixins - 但是,不确定是否应该是这种情况。
谢谢。