Использование Mako с Pyramid вызывает ошибку - PullRequest
2 голосов
/ 20 февраля 2011

При попытке использовать Mako с платформой Pyramid зайдите в файл development.ini и добавьте строку

mako.directories = TestProject:templates 

в:

[app:TestProject]

, а затем создайтепростой HTML-файл с именем template.mako в подкаталоге templates я получаю:

ImportError: No module named TestProject

Но я не понимаю, почему это происходит после описанных выше шагов.Почему эти шаги генерируют ошибку importError?

Дополнительные сведения об ошибке:

URL: http://localhost:6543/
File 'C:\\env\\lib\\site-packages\\weberror-0.10.3-py2.7.egg\\weberror\\evalexception.py', line 431 in respond
app_iter = self.application(environ, detect_start_response)
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\router.py', line 158 in __call__
response = view_callable(context, request)
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\config.py', line 2839 in _rendered_view
context)
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\renderers.py', line 294 in render_view
request=request)
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\renderers.py', line 322 in render_to_response
result = self.render(value, system_values, request=request)
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\renderers.py', line 298 in render
renderer = self.renderer
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\decorator.py', line 17 in __get__
val = self.wrapped(inst)
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\renderers.py', line 280 in renderer
return factory(self)
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\mako_templating.py', line 77 in renderer_factory
directories = [ abspath_from_asset_spec(d) for d in directories ]
File 'C:\\env\\lib\\site-packages\\pyramid-1.0-py2.7.egg\\pyramid\\asset.py', line 207 in abspath_from_asset_spec
return pkg_resources.resource_filename(pname, filename)
File 'C:\\env\\lib\\site-packages\\setuptools-0.6c12dev_r88124-py2.7.egg\\pkg_resources.py', line 881 in resource_filename
File 'C:\\env\\lib\\site-packages\\setuptools-0.6c12dev_r88124-py2.7.egg\\pkg_resources.py', line 201 in get_provider
ImportError: No module named TestProject

Ответы [ 2 ]

9 голосов
/ 25 апреля 2011

Как итог:

Отредактируйте файл development.ini и добавьте в раздел [app:MyProject]:

mako.directories = myproject: templates

Теперь мы можем открыть файл /MyProject/myproject/__init__.py и добавить строку вроде:

config.add_route ('foo', '/ foo', view = 'myproject.views.foo', view_renderer= 'foo.mako')

Будет отображаться шаблон, расположенный в: /MyProject/myproject/templates/foo.mako


Примечание: MyProject и myproject название вашего проекта.Уважайте случай.

Не забудьте выполнить ту же конфигурацию в файле production.ini!

Редактировать : я вижу в версии пирамиды 1.3a1 (2011-12-09) Список изменений в разделе «Особенности»:

Для использования шаблонов Mako больше не требуется настройка mako.directories. Обоснование: средства визуализации шаблонов Mako могут быть указаны с использованием абсолютной спецификации активов.Целое приложение может быть написано с такими характеристиками активов, не требуя упорядоченного пути поиска.

3 голосов
/ 21 февраля 2011

Это происходит потому, что спецификация mako.templates находится в формате package: directory.Поэтому у вас должен быть пакет, называемый, в вашем случае, «TestProject».

Возможно, у вас есть пакет для вашего проекта, но он явно не называется «TestProject».

...