【问题标题】:call a helper function and create a progress bar on django调用辅助函数并在 django 上创建进度条
【发布时间】:2014-02-05 14:58:47
【问题描述】:

我想为投票制作一个进度条。我使用 django 1.4.8 来实现。进度条应该显示已经投票的人的比例。还有一个帮助函数返回投票用户的总和。

首先我编辑模板和 css 以显示栏。之后,我尝试将 jquery 用于实际行为。但我迷路了。我在互联网上搜索,但我可以清楚地理解。我不确定哪种方法是正确的。我不想使用任何其他外部库。

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

【问题讨论】:

  • 您想“即时”更新进度条,而不刷新页面吗?
  • 您必须定期调用服务器(通过 Ajax 调用)并查看发生了什么,或者您必须在服务器上使用某种实时事物将数据推送到浏览器。前者很容易做到并且可以很好地工作,后者更复杂,你必须在服务器中调整一些东西。谷歌“实时 django”。
  • @Tiago 感谢您的提示。

标签: django html progress-bar meter


【解决方案1】:

您需要考虑 Web 浏览器和服务器 (Django) 的通信方式。

浏览器向服务器上的 URL 发出“获取”请求。在 Django 中,您有一个 urls.py 文件,该文件确定哪个 view 将处理对该 url 的请求。例如,将有一个视图呈现包含投票表单的 HTML 代码的模板。

当用户提交投票时,浏览器会发出“发布”请求,将投票的表单数据发送到服务器 - 发送到处理将投票保存到数据库的特定 Django 视图。通常在 Django 中,我们会为表单的 get 和 post 使用相同的视图函数 - 有关详细信息,请参阅此答案:https://stackoverflow.com/a/21114637/202168

不清楚您是想一开始显示进度条,还是只在他们提交投票后才显示进度条。无论哪种方式,您只需要在 Django 视图中计算用户百分比和总和的相关值,并将这些值传递到模板中,模板会将 HTML 发送回浏览器。

如果您使用的是HTML5 progress bar,您甚至不需要 jQuery。除非您希望用户在 其他 用户提交投票时看到进度条发生变化(要复杂得多),否则您也不需要任何“ajax”内容。

我建议你先从 Django 教程开始:
https://docs.djangoproject.com/en/dev/intro/tutorial01/

【讨论】:

  • 我有点困惑,但您的建议和链接对我有很大帮助。我知道我必须编辑视图,但我不确定如何编辑。事实上,当用户在另一个页面上投票时会出现该栏。您要明确的是 jquery 的使用原因、时间和方式。顺便说一句,我已经开始阅读文档了。非常感谢。
【解决方案2】:

所以准确地说,helper.py 从 jingo 导入寄存器。这意味着您立即将函数调用到模板中。此外,我使用而不是用于我的目的。

helper.py

from jingo import register

@register.filter
def get_value():
     return value

进入模板

<meter min="0" value="{{ <app_name>|get_value }} max="1"></meter>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多