javascript - 即使代码有效,属性错误。有关系吗?
问题描述
我正在调用一个函数属性来更新我的 Flask 应用程序中的 while 循环中的变量,然后将数据发送到我的模板 JS 以更新 css 属性 - 这是为了更新 PyTube 中的进度条。
我收到'AttributeError:'function'对象在Powershell中没有属性'完成百分比'。
我的代码可以正常工作并且可以正常工作。
尽管我想遵循最佳实践并编写正确的代码,但在这种情况下,这是一种解决方法,因为我找不到任何其他解决方案。
作为 Python 和 Flask 的新手,我想知道这个错误是否重要,如果是,它会有什么负面影响?
功能
def on_progress(stream, chunk, bytes_remaining):
total_size = stream.filesize
bytes_downloaded = total_size - bytes_remaining
on_progress.percentage_of_completion = bytes_downloaded / total_size * 100
包含 while 循环的路由
@app.route('/progress')
def progress():
def generate():
x = 0
while x <= 100:
x = round(on_progress.percentage_of_completion)
yield "data:" + str(x) + "\n\n"
time.sleep(0.1)
return Response(generate(), mimetype= 'text/event-stream')
模板 JS
var source = new EventSource("/progress");
source.onmessage = function(event) {
$('.progress-bar').css('width', event.data+'%').attr('aria-valuenow', event.data);
$('.progress-bar-label').text(event.data+'%');
if(event.data == 100){
source.close()
}
}
模板 CSS
<div class="progress" style="width: 50%; margin: 50px;">
<div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%">
<span class="progress-bar-label">0%</span>
</div>
</div>
解决方案
您收到的错误消息很简单。实体是一个函数,on_progress
没有percentage_of_completion
属性。
您可能想要做的是更改您的函数,以便它返回完成百分比:
def on_progress(stream, chunk, bytes_remaining):
total_size = stream.filesize
bytes_downloaded = total_size - bytes_remaining
return bytes_downloaded / total_size * 100
然后正确使用它,作为函数调用:
...
while x <= 100:
x = round(on_progress())
...
请注意,我还没有阅读您的其余代码,您可能还有一些我没有考虑到的其他问题。
推荐阅读
- spring - 如何处理假客户端连接超时
- mongodb - MongoDB 上的时区查询
- java - 通过多种意图正确传递价值
- javascript - 预定义函数 display() 时如何覆盖效果并更改数组每个元素中的效果
- mongodb - 我需要使用操作更新 Mongodb Shell 中的值
- javascript - 如何向控制器发送多个 id
- javascript - 如何获取输入值并将其设置为单击状态并控制台记录它以进行反应
- amazon-web-services - 无法将 RDS 快照导出到 S3:“当前不支持此操作”
- google-smart-home - 如何在没有帐户链接的情况下进行本地执行操作?
- linux - 如何更改命令文本以在 Linux 中运行应用程序?