栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

您如何像在Stackoverflow中一样制作一个上-下投票按钮?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

您如何像在Stackoverflow中一样制作一个上-下投票按钮?

这是使用jQuery / Django的肮脏/未经尝试的理论实现。

我们将假设上下投票是针对本网站上的问题/答案,但是显然可以根据您的实际用例进行调整。

模板

<div id="answer_595" >  <img src="vote_up.png" >  <div >0</div>  <img src="vote_down.png" >  Blah blah blah this is my answer.</div><div id="answer_596" >  <img src="vote_up.png" >  <div >0</div>  <img src="vote_down.png" >  Blah blah blah this is my other answer.</div>

Java脚本

$(function() {    $('div.answer img.vote').click(function() {        var id = $(this).parents('div.answer').attr('id').split('_')[1];        var vote_type = $(this).hasClass('up') ? 'up' : 'down';        if($(this).hasClass('selected')) { $.post('/vote/', {id: id, type: vote_type}, function(json) {     if(json.success == 'success') {         $('#answer_' + id)          .find('img.' + vote_type);          .attr('src', 'vote_' + vote_type + '_selected.png')          .addClass('selected');         $('div.score', '#answer_' + id).html(json.score);     } });        } else { $.post('/remove_vote/', {id: id, type: vote_type}, function(json) {     if(json.success == 'success') {         $('#answer_' + id)          .find('img.' + vote_type);          .attr('src', 'vote_' + vote_type + '.png')          .removeClass('selected');         $('div.score', '#answer_' + id).html(json.score);     } });  }    });});

Django视图

def vote(request):    if request.method == 'POST':        try: answer = Answer.objects.get(pk=request.POST['id'])        except Answer.DoesNotExist: return HttpResponse("{'success': 'false'}")        try: vote = Vote.objects.get(answer=answer, user=request.user)        except Vote.DoesNotExist: pass        else: return HttpResponse("{'success': 'false'}")        if request.POST['type'] == 'up': answer.score = answer.score + 1        else: answer.score = answer.score - 1        answer.save()        Vote.objects.create(answer=answer,      user=request.user,      type=request.POST['type'])        return HttpResponse("{'success':'true', 'score':" + answer.score + "}")    else:        raise Http404('What are you doing here?')def remove_vote(request):    if request.method == 'POST':        try: answer = Answer.objects.get(pk=request.POST['id'])        except Answer.DoesNotExist: return HttpResponse("{'success': 'false'}")        try: vote = Vote.objects.get(answer=answer, user=request.user)        except Vote.DoesNotExist: return HttpResponse("{'success': 'false'}")        else: vote.delete()        if request.POST['type'] == 'up': answer.score = answer.score - 1        else: answer.score = answer.score + 1        answer.save()        return HttpResponse("{'success':'true', 'score':" + answer.score + "}")    else:        raise Http404('What are you doing here?')

kes 当我开始回答这个问题时,我并不想写那么多,但是我被带走了。首次加载页面时,您仍然缺少最初获得所有投票的初始请求,但我将其留给读者练习。总之,如果你

在使用Django事实,有兴趣的投票#1的测试更加/实FPGA实现,我建议你检查出的源代码为cnprog.com,用Python编写/
Django的#1的中国克隆。他们发布了代码,这相当不错。




转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436858.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号