如何将html视图数据或(Python)服务器数据传输到Angular或Javascript



我正在使用python webapp2框架在GAE上编写一个小型web应用程序。

我想要实现的是通过javascript或angularjs显示服务器数据到html视图。实际上,应用程序根据服务器数据使用d3.js绘制一些图形。我知道我可以使用$http。从服务器检索数据。但这种方式我需要创建另一个页面或处理程序。我想知道是否有什么方法可以让我做以下的事情。

  1. 在服务器python处理程序中,检索存储的数据,然后传递给jinja2模板值。渲染html.
  2. 通过jinja2模板值在html视图中显示一些数据。
  3. (缺失的部分)如何将数据从python处理程序传递给js ?或者如何将数据从html视图传递给js ?从html视图中我知道两种方法。一种是使用嵌入式javascript代码。

    var data = {{serverData}}

另一个是使用隐藏的输入表单与角数据绑定。他们两个都不太好。

4。使用d3js或其他js库计算数据并返回到视图。

有什么想法吗?我想可能会有一些有棱角的方式把它做得很漂亮,但我没有想到。

既然你已经准备为前端构建一个Angular应用,为什么不让整个架构都RESTful呢?这样,前端Angular应用将负责呈现,而服务器只负责数据。您可以通过JSON在服务器和前端之间传递数据,其好处是不需要在后端处理html或模板。Angular已经有了Service和$http,它们可以抽象出双向数据绑定,利用webapp2的RESTful特性,你可以毫不费力地实现这一点。

Jinja2对此有一个建议,即在构建模板时将对象传递到上下文中。我不知道为什么您认为这很丑,或者至少比使用Jinja2只模板HTML更丑。以下是他们的建议(见http://flask.pocoo.org/docs/templating/):

)
<script type=text/javascript>
    doSomethingWith({{ user.username|tojson|safe }});
</script>

正如其他人建议的那样,如果您愿意,可以使用RESTful服务,但是如果不了解您的应用程序,我不相信这会使您的代码更干净。根据我的经验,在初始页面加载中嵌入一些数据是一种相当常见的做法,可以简化应用程序的其余部分。如果在初始页面加载时服务器上已经有了这些数据,则无需处理客户端异步加载,并且它不会减慢初始请求的速度。

最新更新