【发布时间】:2017-07-17 21:56:01
【问题描述】:
我一直在努力解决这个问题,但我不知道如何
我有一个表格,我收到secs
form role="form" action="" method="POST" >{% csrf_token %}
<br>
<input type="number" name="secs" min="0" max="999" maxlength="3" class="form-control no-spinners" placeholder="Programar...">
<br>
<button type="submit" id="btn-login" class="w3-btn w3-large w3-green" style="width:30%"> Aceptar </button>
</form>
在我的 views.py
中def streaming(request):
if request.method == 'POST':
secs = request.POST['secs']
print secs
programarTiempo(secs)
messages.info(request, 'Iniciando streaming en...' + secs + ' segundos')
time.sleep(float(secs))
return redirect('streaming')
return render(request, "straming.html", {"secs":secs})
当我访问我的 .html 时,出现以下错误:
UnboundLocalError 在 /streaming/ 局部变量 'secs' 被引用 分配前
提前致谢!
【问题讨论】:
-
如果 request.method 不是“POST”,则永远不会定义
secs,因此当您尝试调用render()时,会出现错误。 -
是的,我知道那部分,但如果我在 post 方法之外定义 secs,我将无法获得
secs的正确值 -
您从
request.POST['secs']获取值,当 request.method 不是 POST 时,该值不存在。所以我不知道你可能期望得到什么价值...... -
你想要 previous 函数执行的
secs的值吗? -
如果请求是 GET,请尝试在查询字符串中接受它。像这样 /my/app/myroute?secs=3。然后在您的控制器中,您可以拥有
sec = request.args["secs"]