Я действительно новичок в Pyramid (и довольно плохо знаком с веб-фреймворками в целом).
Я пытаюсь дойти до стадии, когда я могу вернуть необработанный 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}
Когда я вставляю термин в форму и вызывается функция my_view
, запрашивается база данных, и, однако, получаются правильные результаты,вместо того, чтобы возвращаемая строка превращалась в html на веб-странице, вместо этого она печатается как строка на веб-странице.
Я подозреваю, что это как-то связано с типом содержимого?Но я пока не очень хорошо понимаю Пирамиду.Может кто-нибудь объяснить, как заставить это возвращать html, который интерпретируется браузером как html, а не просто строка?
Дополнительный вопрос - должен ли я даже использовать views.py
для этого типа вызова базы данных?Я все еще запутался, когда весь объект Root входит в него.Я использую MongoDB в качестве базы данных.,.