2014-02-05 19 views
0

我想为投票做出进度条。我使用django 1.4.8来实现。进度条应显示已投票人数。还有一个帮助函数可以返回投票的用户总数。调用助手函数并在django上创建进度条

起初我编辑模板和CSS来显示栏。之后,我尝试使用jquery作为实际行为。但我迷路了。我在互联网上搜索,但我可以清楚地了解。我不确定哪个是正确的做法。我不想使用任何其他外部库。

所以,问题是如何调用帮助功能,以及在哪里使用该值来将进度条上的正确百分比显示到模板中?

+0

你想 “飞” 更新进度条,不刷新页面? – J0HN

+0

您必须定期(通过Ajax调用)调用服务器并查看发生了什么,或者您必须在服务器上使用某种实时东西来将数据推送到浏览器。前者很容易做到,可以很好地工作,后者更复杂,你将不得不调整服务器中的东西。 Google“实时django”。 – Tiago

+0

@Tiago感谢您的提示。 – b10n1k

回答

1

您需要考虑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/

+0

我有点困惑,但你的建议和链接帮助我很多。我知道我必须编辑视图,但我不确定究竟如何。事实上,当用户在另一个页面投票结果时,栏会出现。你明确的是使用jquery为什么,何时以及如何。顺便说一句,我已经开始阅读文档。谢谢你很多。 – b10n1k

+0

谢谢你的帮助Anentropic。真的很有帮助。 – b10n1k

0

所以要准确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>