Python/Djang中PHP“ob”函数的等价函数

2024-09-30 03:23:50 发布

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

有没有什么函数可以像PHP ob_start(myCallbackFunction)ob_end_flush()一样,允许我修改Python框架(Django/others)中的布局和视图?谢谢!在

更新

<?php
ob_start(function($res){
   echo str_replace('test','new string',$res);
});
?>

test
test
test
test

<?php ob_end_flush(); ?>

Tags: django函数test框架视图res布局start
2条回答

为了在Python中直接实现这个结果,可以像这里讨论的那样修补stdout/stderr

Temporarily Redirect stdout/stderr

对于Django模板,只需将调用包装在一个块(或一个单独的文件)中,并在必要时包含它们。在

值得一提的是,这种方法并不是很像Python,你应该考虑一下你要做什么,并找到一种更具Python式的方法来实现它。如果您告诉我们更多关于您的用例的信息,我们可能会提出更好的方法。在

让我们在python3中实现PHPob_start和{a2}函数。在

输出存储在一个文件中,也可以使用任何类型的流。在

from functools import partial
output_buffer = None
print_orig = print
def ob_start(fname="print.txt"):
    global print
    global output_buffer
    print = partial(print_orig, file=output_buffer)
    output_buffer = open(fname, 'w')
def ob_end():
    global output_buffer
    close(output_buffer)
    print = print_orig
def ob_get_contents(fname="print.txt"):
    return open(fname, 'r').read()

用法:

^{pr2}$

将打印

Hi John Bye John

相关问题 更多 >

    热门问题