我對Pyramid真的很陌生(對於一般的網頁框架來說,這是個很新的東西)。在金字塔中,如何從視圖返回原始HTML?
我試圖到一個階段,我可以從視圖中返回原始HTML,這樣我就可以標記從我的mongoDB商店返回的數據。
我__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}
當我在表單中插入一個術語,並在中插入一個術語210函數被調用,數據庫被查詢,並且正確的結果被取出,但是,而不是返回的字符串變成網頁中的html,它將作爲字符串打印在網頁中。
我懷疑這是與內容類型有關?但我對金字塔還不是很瞭解。有人可以解釋如何得到這個返回由瀏覽器解釋爲HTML的HTML,而不僅僅是一個字符串?
額外的問題 - 我應該甚至使用這種類型的數據庫調用views.py
?我仍然對整個Root對象進入它的地方感到困惑。我使用MongoDB作爲數據庫後端。 。 。
的鏈接斷開 – GertV
更新鏈接 –