VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • 带你认识 flask 后台作业(5)

</script> ...{% endblock %}

 

这个函数接受一个任务id和一个进度值,并使用jQuery为这个任务定位<span>元素,转换为新进度作为其内容写入。无需验证页面上是否存在该元素,因为如果没有找到该元素,jQuery将不会执行任何操作。

app / tasks.py中的_set_task_progress()函数每次更新进度时调用add_notification(),就会产生新的通知。而我在第二十一章明智地以完全通用的方式实现了通知功能。所以当浏览器定期向服务器发送时通知更新请求时,浏览器会获得通过add_notification()方法添加的任何通知

但是,这些JavaScript代码只能识别具有unread_message_count名称的那些通知,并忽略其余部分。我现在需要做的是扩展该函数,通过调用我上面定义的set_task_progress()函数来处理task_progress通知。以下是处理通知更新版本JavaScript代码:

app / templates / base.html:通知处理器

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
for (var i = 0; i < notifications.length; i++) {    switch (notifications[i].name) {        case 'unread_message_count':            set_message_count(notifications[i].data);            break;        case 'task_progress':            set_task_progress(                notifications[i].data.task_id,                notifications[i].data.progress);            break;    }    since = notifications[i].timestamp;}

 

现在我需要处理两个不同的通知,我决定用一个switch语句替换检查unread_message_count通知名称的if语句,该语句包含我现在需要支持的每个通知。如果你对“ C”系列语言不熟悉,就可能从未见过是switch语句,它提供了一种方便的语法,可以替代一长串的if/elseif语句。这是一个很棒的特性,因为当我需要支持更多通知时,只需简单地添加case块即可。

回顾一下,RQ任务附加到task_progress通知的数据是一个包含两个元素task_idprogress的字典,这两个元素是我调用set_task_progress()的两个参数。

如果您现在运行该应用,则绿色Alert插入的进度指示器将每10秒刷新一次(因为刷新通知的时间间隔是10秒)。

如果您要维护非英语语言文件,则需要使用Flask-Babel刷新翻译文件,然后添加新的翻译:

  •  
(venv) $ flask translate update

如果您使用的是编码翻译,那么我已经为你完成了翻译工作,因此可以从下载包中提取app / translations / es / LC_MESSAGES / messages.po文件,从而将其添加到您的项目中。

翻译文件到位后,还要编译翻译文件:

  •  
(venv) $ flask translate compile

 

 

 

 


相关教程