我在从Javascript表单获取数据方面遇到了Django问题。这是我的Javascript代码......
'\n'.join(...)
我知道使用GET并不理想但是我无法使用POST,它根本不会重定向到目标页面。
这是我的Django Class和函数......
function save() {
var form = document.createElement("form");
console.log(form);
form.setAttribute('method', 'get');
form.setAttribute('action', '/quiz_score/');
document.body.appendChild(form);
var i = document.createElement("input");
i.setAttribute('name', 'Score');
i.setAttribute('value', ""+score);
form.appendChild(i);
var i = document.createElement("input");
i.setAttribute('name', 'csrfmiddlewaretoken');
i.setAttribute('value', '{{ csrf_token }}');
form.appendChild(i);
form.submit();
}
我只是想获得得分变量,所以我可以在python中使用它。
如果您需要更多详细信息,请发表评论,我会将其添加到以下问题中。
答案 0 :(得分:1)
我使用以下HTML / JavaScript工作:
<html><body>
<button onclick="save();">click me</button>
<script>
function save() {
var form = document.createElement("form");
console.log(form);
form.setAttribute('method', 'get');
form.setAttribute('action', '/quiz_score/');
document.body.appendChild(form);
var i = document.createElement("input");
i.setAttribute('name', 'Score');
i.setAttribute('value', "+score");
form.appendChild(i);
var i = document.createElement("input");
i.setAttribute('name', 'csrfmiddlewaretoken');
i.setAttribute('value', '{{ csrf_token }}');
form.appendChild(i);
form.submit();
}
</script>
</body></html>
查看:
from django.shortcuts import render
def quiz_score(request):
context = {'score': request.GET['Score']}
return render(request, 'quiz_score.html', context=context)
urls.py:
url(r'^quiz_score/$', quiz_score)
我在您的JavaScript中注意到您i.setAttribute('value', ""+score);
。也许这应该是i.setAttribute('value', "+score");
或类似的东西?
我选择了直观的功能视图。您有一个有趣的TemplateView和基于功能的视图组合。如果您想使用TemplateView,可以执行以下操作:
from django.views.generic import TemplateView
class QuizScoreView(TemplateView):
template_name = 'quiz_score.html'
def get(self, request, *args, **kwargs):
context = self.get_context_data(**kwargs)
context['Score'] = request.GET['Score']
return self.render_to_response(context)
urls.py:
url(r'^quiz_score/$', QuizScoreView.as_view())
希望有所帮助!