将投票变量传递到js-I'我没有使用表单、POST或django投票
Trouble passing vote variable to js - I'm not using forms, POST, or django-voting
我有一个简单的输入和显示系统,用于在单个网页上显示短文本。文本输入只是视图中带有GET的一个输入字段。我想在最新参赛作品的页面上有一个非常基本的向上或向下的投票系统。我可以获取变量的最新条目。。。
网上有人暗示可以将变量传递给js,这是我在做任何进一步操作之前的第一个调用端口。
我还没有使用表单或POST,因为它似乎包含了对我的基本需求不必要的url和代码。有人能建议我如何将变量传递给js吗?
以下是一些代码片段;
模板
<script type="text/javascript">
{% for entry in voting_entry %}
var votingEntry="{{entry.id}}"
{% endfor %}
</script>
<script type="text/javascript" src="{{STATIC_URL}}vote.js"></script>
vote.js
$(document).ready(function() {
$("#votingEntry").bind("keypress", function(e) {
if (e.keyCode == 38) {
var vote = $("#votingEntry").val();
var args = {'vote':vote};
$.get("/vote/", args).done(function(data) {
location.reload();
});
}
});
视图
def index(request):
context = {
'latest_entry_list': Entry.objects.order_by('-pub_date')[:10],
'high_entry_list': Entry.objects.order_by('-score')[:10],
'low_entry_list': Entry.objects.order_by('score')[:10],
'voting_entry': Entry.objects.order_by('-pub_date')[:1],
}
return render(request, 'entries/index.html', context);
*snip*
def vote(request):
voting_id = request.GET.get('vote')
v = Entry.objects.get(pk='voting_id')
v.score +=1
v.save()
return HttpResponse('votedone')
不太清楚你想做什么。在第一个代码段中,你重复地将同一个变量votingEntry
设置为一个包含列表中ID的字符串。由于您每次都设置相同的变量,因此var最终将只显示列表中的最后一个值。
此外,为了在JS中的函数外部设置全局变量,您需要var
关键字。
然而,我不太确定您为什么要这样做,因为您在JS中的其他任何地方都没有使用votingEntry
变量。你需要提供更多关于你希望实现什么的细节。
在模板中使用一个非常简单的表单对其进行排序。提交按钮通过url触发views.vote函数,views.voice检测向上或向下按钮名称,并将投票保存到entryid引用的条目。这是由模板表单中隐藏名称上的POST.get带来的。
最后,重定向将所有内容保存在一个页面上并刷新索引。
模板
<ul>
{% for entry in voting_entry_list %}
<li><a href="/entries/{{ entry.id }}/">{{ entry.text }}{{ entry.score }}</a></li>
<li><form method="POST" action="/vote/" >
{% csrf_token %}
<input type="hidden" name="voteid" value="{{ entry.id }}" />
<input type="submit" name='voteup' value="Up" />
<input type="submit" name='votedown' value="Down" />
</form><li>
{% endfor %}
</ul>
urls
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^index/$', 'entries.views.index'),
url(r'^add/$', 'entries.views.add'),
url(r'^vote/$', 'entries.views.vote')
)
视图
@csrf_protect
def vote(request):
voting_id = request.POST.get('voteid',None)
if request.method=='POST':
if 'voteup' in request.POST:
v = Entry.objects.get(pk=voting_id)
v.score +=1
v.save()
if 'votedown' in request.POST:
v = Entry.objects.get(pk=voting_id)
v.score -=1
v.save()
else:
pass
return HttpResponseRedirect('/index')
我的最后一个问题是必须去掉-pk=voting_id的引号,以防止出现"基数为10的int()的无效文本"的错误。
希望这能帮助其他只想以基本的方式开始使用这些系统的人,但与django民意测验教程不太一样。在各种方法(JSON、js、POST、表单、regex、url等)中跋涉有点困难,所以下面是我处理许多so问题中的各种片段的方法。
- 可以't让我的if语句处理js中的html表单输入
- 如何使用WCF服务和javascript表单post上传.doc文件
- Javascript生成的表单未提交
- 如何使用javascript或html下载PDF格式的填写表单
- HTML表单提交时未执行外部函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- Ajax发布表单序列化,发布引号'
- 多级HTML表单
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 在验证和发送邮件后更改联系人表单的 html
- jQuery表单添加不适用于下拉列表
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- 如何从pdftron webviewer获取表单数据
- JS验证ajax返回的html中的表单数据
- Javascript更新孙窗口中的表单元素
- 解析javascript表单验证器
- 阻止表单元素提交
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- Jquery提交表单而不刷新