我想为投票做出进度条。我使用django 1.4.8来实现。进度条应显示已投票人数。还有一个帮助函数可以返回投票的用户总数。调用助手函数并在django上创建进度条
起初我编辑模板和CSS来显示栏。之后,我尝试使用jquery作为实际行为。但我迷路了。我在互联网上搜索,但我可以清楚地了解。我不确定哪个是正确的做法。我不想使用任何其他外部库。
所以,问题是如何调用帮助功能,以及在哪里使用该值来将进度条上的正确百分比显示到模板中?
我想为投票做出进度条。我使用django 1.4.8来实现。进度条应显示已投票人数。还有一个帮助函数可以返回投票的用户总数。调用助手函数并在django上创建进度条
起初我编辑模板和CSS来显示栏。之后,我尝试使用jquery作为实际行为。但我迷路了。我在互联网上搜索,但我可以清楚地了解。我不确定哪个是正确的做法。我不想使用任何其他外部库。
所以,问题是如何调用帮助功能,以及在哪里使用该值来将进度条上的正确百分比显示到模板中?
您需要考虑Web浏览器和服务器(Django)如何通信。
浏览器向服务器上的url发出'get'请求。在Django中,您有一个urls.py文件,该文件确定哪个视图将处理对该URL的请求。例如,将会有一个视图呈现一个包含轮询表单HTML代码的模板。
当用户提交投票时,浏览器发出'发布'请求,将投票的表单数据发送到服务器 - 发送到特定的Django视图,该视图处理将投票投票保存到数据库。通常在Django中,我们对表单的get和post都使用相同的视图函数 - 请参阅此答案以获取更多详细信息:https://stackoverflow.com/a/21114637/202168
不清楚您最初是想显示进度条,还是仅在他们已经提交了投票。无论采用哪种方式,只需要计算Django视图中用户的百分比和总和的相关值,并将这些值传递给模板,以便将HTML发送回浏览器。
如果你使用HTML5 progress bar你甚至不需要jQuery。除非你想让用户看到进度条更改为其他用户提交他们的投票(更复杂),你也不需要任何'阿贾克斯'的东西。
我建议你首先开始Django的教程:
https://docs.djangoproject.com/en/dev/intro/tutorial01/
所以要准确helper.py进口极端爱国义登记。这意味着您可以立即将该功能调用到模板中。此外,我用而不是为了我的目的。
helper.py
from jingo import register
@register.filter
def get_value():
return value
为模板
<meter min="0" value="{{ <app_name>|get_value }} max="1"></meter>
你想 “飞” 更新进度条,不刷新页面? – J0HN
您必须定期(通过Ajax调用)调用服务器并查看发生了什么,或者您必须在服务器上使用某种实时东西来将数据推送到浏览器。前者很容易做到,可以很好地工作,后者更复杂,你将不得不调整服务器中的东西。 Google“实时django”。 – Tiago
@Tiago感谢您的提示。 – b10n1k