Django中的值错误,因为视图request.GET或request.POST无法从javascript

时间:2018-02-16 06:56:14

标签: django django-templates django-views

我有一个测验应用,模板中的JavaScript和django视图之间有很多交互。通常,在足够的互联网连接和较少的流量上,代码按预期工作。但是,一旦互联网缓慢且流量很高(即大约20人同时进行测验)。 Django视图停止捕获模板中表单发送的值 这是一个例子: 模板代码

 <form action='{% url "QuestionsAndPapers:EvaluateTest" %}' method='post' id ='finishForm'>
    {%csrf_token%}
    <input type="text" name="timeTaken" value="" class='hidden' />
    <button type="submit" id='testsub' value="{{te_id}}" class="btn btn-default text-center" name="testSub" onclick="formClick()" >Submit Test</button>
</form>

Django查看:

def evaluate_test(request):
user = request.user
me = Studs(user)
if 'testSub' in request.POST:
    # get values of test id and total test time
    try:
        test_id = request.POST['testSub']
        test_id = int(test_id)

现在问题是模板成功返回{{te_id}}变量的大部分时间,但是当流量很高且互联网很慢时,evaluate_test函数无法捕获{{te_id}}变量并且它会抛出一个 错误

  

ValueError:基数为10的int()的无效文字:

问题是此错误不可重复。

1 个答案:

答案 0 :(得分:1)

test_id = int(test_id)替换您的行test_id = int(float(test_id))

为什么会出现这个ValueError?

>>> int('5.0')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '5.0'
>>> int(float('5.0'))
5

有关详细信息,请参阅此stackoverflow post