哪一个导致了哪一个:HTTP/1.1“500错误或TypeError:int()参数必须是字符串或数字,而不是'NoneType'

2024-04-27 23:44:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在试图找出问题的根源。我有一个拨号音python应用程序,我正试图通过Flask Web服务器使用嵌入html脚本中的roundSlider小部件控制它的变量值(samp_速率)。当我运行Flask Web服务器时,程序似乎没有问题(但还没有音调),然后会发生一些事情:

首先:应用程序将以如下方式启动(到目前为止似乎还不错):

 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 269-962-008
127.0.0.1 - - [31/Jul/2019 14:22:45] "GET / HTTP/1.1" 200 -

:当我开始拖动滑块小部件按钮时,我将得到以下回溯:

gr::log :INFO: audio source - Audio sink arch: alsa
aUaUaUaU    127.0.0.1 - - [31/Jul/2019 14:22:50] "GET /valueofslider?slide_val=1859 HTTP/1.1" 500 -
aUaUTraceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1997, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1985, in wsgi_app
    response = self.handle_exception(e)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1540, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/fit-pc/my_flask_app/virtualenv/Slider/app.py", line 16, in slide
    return main(slide_val)
  File "/home/fit-pc/my_flask_app/virtualenv/Slider/app.py", line 25, in main
    samp_rate = int(slide_val) + 100
TypeError: int() argument must be a string or a number, not 'NoneType'

这就是我在这里感到困惑的地方,我在这里看到两个问题,这一个:

7.0.0.1 - - [31/Jul/2019 14:22:50] "GET /valueofslider?slide_val=1859 HTTP/1.1" 500 -

还有这个:

TypeError: int() argument must be a string or a number, not 'NoneType'

有趣的是,当我出现此错误时,我可以听到音调,拖动滑块越多,音调变化越大,尽管不是以恒定的方式。 我不知道是哪一个导致了另一个!是否由于服务器连接错误而与我的浏览器或internet有关?或者,是因为上述服务器问题导致幻灯片无法获取输入吗

到目前为止我所尝试的:

  • 我尝试使用错误处理程序,但没有成功
  • 我在我的LinuxMint机器上安装了不同的浏览器,但没有帮助

这让我迷路了!如果可以的话,请帮帮我

以下是我的app.py代码:

from flask import Flask, render_template, jsonify, request,redirect,url_for
from random import randint
from top_block_22 import top_block_22

app = Flask(__name__)
# def test():
#     print("its working") 

@app.route('/')
def slide_func():
    return render_template("index.html")

@app.route('/valueofslider')
def slide():
    slide_val = request.form.get('slide_val')
    return main(slide_val)   

# @app.errorhandler(404)
# def not_found_error(error):
#     return render_template('404.html'), 404

# @app.errorhandler(500)
# def internal_error(error):
#     db.session.rollback()
#     return render_template('500.html'), 500 
def main(slide_val):

    tb = top_block_22()
    tb.start()
    samp_rate = int(slide_val) + 100
    print(samp_rate)
    return(slide_val)  

if __name__ == '__main__':
    app.run(debug=True)

这是我的主拨号音代码:

from gnuradio import analog
from gnuradio import audio
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import gr
from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes
from optparse import OptionParser
from flask import Flask, render_template, jsonify, request, redirect, url_for
from random import randint


class top_block_22(gr.top_block):

    def __init__(self):

    #def __init__(self, slide_val):


        gr.top_block.__init__(self, "Top Block 22")        
        ##################################################
        # Variables
        ##################################################
        self.samp_rate = samp_rate = 32000

        ##################################################
        # Blocks
        ##################################################
        self.blocks_add_xx = blocks.add_vff(1)
        self.audio_sink = audio.sink(32000, '', True)
        self.analog_sig_source_x_1 = analog.sig_source_f(samp_rate, analog.GR_COS_WAVE, 440, 0.4, 0)
        self.analog_sig_source_x_0 = analog.sig_source_f(samp_rate, analog.GR_COS_WAVE, 350, 0.4, 0)
        self.analog_noise_source_x_0 = analog.noise_source_f(analog.GR_GAUSSIAN, 0.005, -42)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.analog_noise_source_x_0, 0), (self.blocks_add_xx, 2))
        self.connect((self.analog_sig_source_x_0, 0), (self.blocks_add_xx, 0))
        self.connect((self.analog_sig_source_x_1, 0), (self.blocks_add_xx, 1))
        self.connect((self.blocks_add_xx, 0), (self.audio_sink, 0))



def main(top_block_cls=top_block_22, options=None):


    tb = top_block_22()
    tb.start()
    try:
        raw_input('Press Enter to quit: ')
    except EOFError:
        pass
    tb.stop()
    tb.wait()


if __name__ == '__main__':
        main()

这是我的html脚本:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>jQuery roundSlider - JS Bin</title>
  <link rel="icon" href="data:,">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <link href="https://cdnjs.cloudflare.com/ajax/libs/roundSlider/1.3.2/roundslider.min.css" rel="stylesheet" />
  <script src="https://cdnjs.cloudflare.com/ajax/libs/roundSlider/1.3.2/roundslider.min.js"></script>
</head>
<body>
  <!-- Only html needed   -->

  <div id="slider"></div>

  <script>
    var val;
    $("#slider").roundSlider({
      radius: 215,
        min: 0,
        max: 100000,
       change: function () {

        var obj1 = $("#slider").data("roundSlider");
        val = obj1.getValue();
        value: 10
        $.getJSON('/valueofslider', {
          slide_val: val
        });
      }
    });
  </script>
</body>
</html>

Tags: infrompyimportselfappflasksource
1条回答
网友
1楼 · 发布于 2024-04-27 23:44:18

如果您在url中发送变量

/valueofslider?slide_val=1859

那么它就在args中,而不是form

request.args.get('slide_val')

如果用method="POST"将其设置在<form>中,则它可能位于request.form

如果将<form>method="GET"(或不使用method)一起使用,则它位于request.args

相关问题 更多 >