从Django中的Javascript表单访问GET表单数据

时间:2016-04-13 09:14:05

标签: javascript django python-3.x django-forms

我在从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中使用它。

如果您需要更多详细信息,请发表评论,我会将其添加到以下问题中。

1 个答案:

答案 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())

希望有所帮助!