Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何在浏览器中打开表示HTML的字符串?_Python_Django_Python Webbrowser - Fatal编程技术网

在Python中,如何在浏览器中打开表示HTML的字符串?

在Python中,如何在浏览器中打开表示HTML的字符串?,python,django,python-webbrowser,Python,Django,Python Webbrowser,我想在浏览器中查看Django模板。此特定模板已被调用,但未连接到视图,因此我无法运行服务器并导航到本地主机的URL 我的想法是简单地在Django shell中调用render_to_string,并以某种方式将生成的字符串传递给诸如Chrome之类的web浏览器以查看它。但是,据我所知,该模块只接受url参数,不能用于呈现表示HTML的字符串 你知道我如何实现这一点吗?你可以将html字符串转换为url: 使用: 接下来,我编写了一个测试用例,其中我将HTML写入一个临时文件,并使用文件:/

我想在浏览器中查看Django模板。此特定模板已被调用,但未连接到视图,因此我无法运行服务器并导航到本地主机的URL

我的想法是简单地在Django shell中调用
render_to_string
,并以某种方式将生成的字符串传递给诸如Chrome之类的web浏览器以查看它。但是,据我所知,该模块只接受
url
参数,不能用于呈现表示HTML的字符串


你知道我如何实现这一点吗?

你可以将html字符串转换为url:

使用:

接下来,我编写了一个测试用例,其中我将HTML写入一个临时文件,并使用
文件://
前缀将其转换为
webbrowser.open()接受的
url


(不幸的是,我发现该页面不包含Django的
static
标记引用的图像,但这是一个单独的问题)。

为什么您不能为此创建一个视图?我在复制此片段时遇到了一些问题;它似乎需要两个参数,
input
output
。你是说
b64encode()
?后者还返回一个字节字符串,不能简单地“添加”到Python3中的常规字符串中。应该是
b64encode
,我更新了答案
import base64

html = "..."

url = "text/html;base64," + base64.b64encode(html)
webbrowser.open(url)
import tempfile
import webbrowser
from django.test import SimpleTestCase
from django.template.loader import render_to_string


class ViewEmailTemplate(SimpleTestCase):
    def test_view_email_template(self):
        html = render_to_string('ebay/activate_to_family.html')
        fh, path = tempfile.mkstemp(suffix='.html')
        url = 'file://' + path

        with open(path, 'w') as fp:
            fp.write(html)
        webbrowser.open(url)