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