gpt4 book ai didi

python - 在 Pyramid 中,如何从 View 中返回原始 HTML?

转载 作者:可可西里 更新时间:2023-11-01 09:58:26 25 4
gpt4 key购买 nike

我对 Pyramid 真的很陌生(而且对一般的网络框架也很陌生)。

我正在尝试进入可以从 View 返回原始 HTML 的阶段,以便我可以标记从我的 mongoDB 存储返回的数据。

我的 Pyramid 项目中的__init__.py是标准的:

def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
config = Configurator(root_factory = Root, settings = settings)
config.add_view('hermesweb.views.my_view',
context = 'hermesweb:resources.Root',
renderer = 'hermesweb:templates/mytemplate.pt')
config.add_static_view('static', 'hermesweb:static', cache_max_age = 3600)
views.myDB = connect() # connect to my mongoDB

我的 templates/mytemplate.pt 看起来像这样:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" xmlns:tal="http://xml.zope.org/namespaces/tal">
<head><title>My test title. . . </title></head>
<body>
<div>
<h2>Perform a search</h2>
<form method="GET" action="">
<div>
<input type="text" name="id"/>
</div>
<input type="submit" value="Submit"/>
</form>
<h2>Results</h2>
${results}
</div>
</body
<html>

最后,我的 views.py 看起来像这样:

myDB = "" # ref to the database is assigned on startup.
def my_view(request):
key = request.GET.get('id', None)
results = ""
if key:
db_res = myDB.call_some_find_function(key)
for data in db_res:
results = "%s <li> %s </li>" % (results, data)
results = "<ul> %s </ul>" % results

return {'results': results}

当我在表单中插入一个术语并调用 my_view 函数时,查询数据库并提取正确的结果,但是,返回的字符串并没有在网页中变成 html ,而是在网页中打印为字符串。

我怀疑这与内容类型有关?但我还不太了解 Pyramid 。有人可以解释如何让它返回被浏览器解释为 html 的 html,而不仅仅是一个字符串吗?

额外的问题 - 我应该为这种类型的数据库调用使用 views.py 吗?我仍然对整个 Root 对象进入其中的位置感到困惑。我使用 MongoDB 作为数据库后端。 . .

最佳答案

要防止 Chameleon 转义 ${result} 变量,您需要根据文档使用 ${structure: result}:http://chameleon.readthedocs.org/en/latest/reference.html#structure

关于python - 在 Pyramid 中,如何从 View 中返回原始 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7931492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com