首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以在超文本标记语言中使用Python和Jinja2刷新网页?

可以在超文本标记语言中使用Python和Jinja2刷新网页?
EN

Stack Overflow用户
提问于 2013-05-31 19:14:54
回答 3查看 3K关注 0票数 2

我正在编写一个应用程序来有选择地列出目录中的文件。我希望用户打开一个HTML文件,并得到一条消息“正在更新...”而Python遍历目录并收集信息。当python完成时,页面将填充文件列表。

使用Jinja2可以做到这一点吗?仔细阅读它,似乎很多人都在使用它从Python生成HTML文件。我想做一些稍微不同的事情,使用它在HTML中调用Python。或者,也许我应该采取另一种方法?任何建议都将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2013-06-02 16:25:18

您不能从呈现的模板执行Python,但您可以通过将Python与Javascript相结合来执行您想要的操作。我将使用Flask作为示例web框架,但即使您对Flask不是特别熟悉,也应该很清楚它的作用。

这个想法是你有两个路由/地址。其中一个为您提供您想要的“更新...”的基本视图。要发生的事情。另一条路由返回一个HTML片段,该片段包含呈现给合适的HTML表示的目录数据。所以就像这样:

Python:

代码语言:javascript
复制
def _walk_through_directories():
    """
    Walk through directories and gather the
    data you want and return it in some collection
    for example.
    """
    ...
    return directory_data


@app.route('/directories')
def directories():
    return render_template('directories.html')


@app.route('/directories/fragment')
def directories():
    directory_data = _walk_through_directories()
    return render_template('directories_fragment.html',
                           directory_data=directory_data)

现在,当用户在/directories进入您的基本页面时,他/她会看到您的基本模板还没有包含任何有关目录数据的内容。要解决此问题,您可以在文档加载完成后执行Javascript,并通过使用Ajax执行HTTP GET来获取内容。所以就像这样:

“directories.html”调用的Javascript + jQuery:

代码语言:javascript
复制
$('#message-box').html('Updating...');

$.get('/directories/fragment', function(data) {
  $('#result-box').html(data);
  $('#message-box').html('All done!');
});

因此,我们的想法是使用Python提供基本页面,然后使用客户端Javascript获取“动态”内容。请注意,我只是把它拼凑在一起,所以它可能在某个地方遗漏了一两个括号,您应该添加适当的错误处理和所有这些东西。

票数 3
EN

Stack Overflow用户

发布于 2013-05-31 20:02:11

Jinja2本身只是一种模板语言。为了用Python应用程序中的数据重新填充HTML的一部分,我将使用jQuery这样的JavaScript库,它可以通过AJAX检索数据并使用结果修改DOM。例如,初始页面将显示“正在更新…”。在div元素中。jQuery向应用程序的URL发出AJAX调用,该应用程序读取目录并发送一个超文本标记语言格式的字符串(可能也是通过Jinja呈现的),结果将替换“更新”div的内容。

票数 1
EN

Stack Overflow用户

发布于 2013-05-31 21:49:03

如果您希望用户接收更新,则必须使用通道API。通道API可以将更新从任务发送到客户端中的javascript。

请看这篇博文:http://blog.notdot.net/2011/07/Using-the-Channel-API-on-App-Engine-for-instant-traffic-analysis

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16855993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档