是否可以在HTML中使用Python和Jinja2刷新网页?

2024-05-19 09:47:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

金贾2号有可能吗?仔细阅读它,看起来很多人使用它从Python生成HTML文件。我想做一些稍微不同的事情,用它在HTML中调用Python。或者我应该采取另一种方法?如有任何建议,将不胜感激。在


Tags: 文件方法用户目录信息应用程序消息列表
3条回答

如果希望用户接收更新,则必须使用channelapi。channelapi可以将任务的更新发送到客户机中的javascript。在

查看此博客:http://blog.notdot.net/2011/07/Using-the-Channel-API-on-App-Engine-for-instant-traffic-analysis

您不能从呈现的模板执行Python,但是您可以通过将Python与Javascript结合来实现您想要的功能。我将使用Flask作为一个web框架的示例,但是应该非常清楚它的作用,即使您不太熟悉Flask。在

这个想法是你有两个路线/地址。其中一个服务于你想要你的“更新…”事情发生的基本视图。另一个路由返回一个HTML片段,该片段由呈现到合适HTML表示的目录数据组成。所以像这样:

Python:

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执行httpget来获取内容。所以像这样:

Javascript+jQuery调用自“目录.html“:

^{pr2}$

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

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

相关问题 更多 >

    热门问题