因此,我有一個博客文章的小博客應用程序(django newbie),並且我希望對這些項目中的每一項都包含一個「評級」(類似於上/下stackoflow)。所以,我有一個基於Ajax的ListView中的GET - 但我現在意識到我需要POST來修改這個評級數據。我一直在尋找從django ListView發佈數據,但我無法看到如何做到這一點。目前獲取代碼,這是所有博客文章的列表視圖(分頁),如下所示:ajax在django1.5中發佈數據ListView
#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)
上面的代碼工作正常,獲取的數據(「目標文件」)到模板,我能夠呈現兩種blogposts和GET ajax,但是,我想要做的是發佈數據,以便: [1]該評級從當前值增加1 [2]特定操作(點擊投票),要求login_required 。
我想知道如果有人能指出我在正確的方向做到這一點。我搜索了這個問題,人們似乎建議將Mixins結合起來 - 但不確定是否應該這樣。
謝謝。
起初,我也想起來了 - 但是,從看:http://ccbv.co.uk/projects/Django/1.5/django。 views.generic.list/ListView /我看不到def post - 所以我的印象是ListView中不允許這樣做。情況不是這樣嗎? – JohnJ 2013-03-07 16:35:41
任何事情都是允許的。這只是一個簡單的課程。看看調度方法。如果你創建了一個匹配'http_method_names'中名字的方法,它將被調用。 – czarchaic 2013-03-07 17:07:27
我仍然不確定如何使用帖子..我真的沒有在這裏的形式:(我想通過ajax發佈和更新..你有任何機會的例子嗎?再次感謝 – JohnJ 2013-03-07 17:47:52