【发布时间】:2011-03-12 13:32:11
【问题描述】:
我有以下视图代码:
def pages_view(request):
path = request.path.split('/')[1]
dbsession = DBSession()
page = dbsession.query(PagesTable).from_statement(
'SELECT * FROM pages WHERE path=:page_path').params(page_path=path).first()
pages_dir = os.getcwd() + '/myblog/templates/pages/'
if page:
if path == '':
return render_to_response('myblog:templates/pages/home.mak',
{'page':page}, request=request)
elif os.path.isfile(pages_dir + path + '.mak'):
return render_to_response('myblog:templates/pages/%s.mak'%path,
{'page':page}, request=request)
else:
return render_to_response('myblog:templates/pages/index.mak',
{'page':page}, request=request)
raise NotFound()
基本上,它检查表中是否存在页面。如果它做到了 根据路径名渲染模板,或者如果没有这样的 template 它只是呈现一个默认模板。
我要做的下一部分是为我的 'blog' 页面,包含此页面的一些逻辑。
我尝试了以下示例,但它引发了未定义的错误 当我加载页面时:
@view_config(renderer='myblog:templates/pages/my-blog.mak')
def blog_view(request):
one = 'Hello World'
return {'one':one}
对于这些基本问题,我深表歉意。给出的任何见解都将是 非常感谢。
这是回溯:
URL: http://127.0.0.1:6543/my-blog/
File '/Users/Awais/virtualenv/lib/python2.6/site-packages/WebError-0.10.3-py2.6.egg/weberror/evalexception.py', line 431 in respond
app_iter = self.application(environ, detect_start_response)
File '/Users/Awais/virtualenv/lib/python2.6/site-packages/repoze.tm2-1.0b1-py2.6.egg/repoze/tm/__init__.py', line 23 in __call__
result = self.application(environ, save_status_and_headers)
File '/Users/Awais/virtualenv/lib/python2.6/site-packages/pyramid-1.0-py2.6.egg/pyramid/router.py', line 158 in __call__
response = view_callable(context, request)
File '/Users/Awais/virtualenv/lib/python2.6/site-packages/pyramid-1.0-py2.6.egg/pyramid/config.py', line 2916 in _requestonly_view
response = view(request)
File '/Users/Awais/virtualenv/MyBlog/myblog/views.py', line 25 in pages_view
{'page':page}, request=request)
File '/Users/Awais/virtualenv/lib/python2.6/site-packages/pyramid-1.0-py2.6.egg/pyramid/renderers.py', line 111 in render_to_response
return helper.render_to_response(value, None, request=request)
File '/Users/Awais/virtualenv/lib/python2.6/site-packages/pyramid-1.0-py2.6.egg/pyramid/renderers.py', line 322 in render_to_response
result = self.render(value, system_values, request=request)
File '/Users/Awais/virtualenv/lib/python2.6/site-packages/pyramid-1.0-py2.6.egg/pyramid/renderers.py', line 318 in render
result = renderer(value, system_values)
File '/Users/Awais/virtualenv/lib/python2.6/site-packages/pyramid-1.0-py2.6.egg/pyramid/mako_templating.py', line 131 in __call__
result = template.render_unicode(**system)
File '/Users/Awais/virtualenv/lib/python2.6/site-packages/Mako-0.3.6-py2.6.egg/mako/template.py', line 292 in render_unicode
as_unicode=True)
File '/Users/Awais/virtualenv/lib/python2.6/site-packages/Mako-0.3.6-py2.6.egg/mako/runtime.py', line 575 in _render
**_kwargs_for_callable(callable_, data))
File '/Users/Awais/virtualenv/lib/python2.6/site-packages/Mako-0.3.6-py2.6.egg/mako/runtime.py', line 607 in _render_context
_exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
File '/Users/Awais/virtualenv/lib/python2.6/site-packages/Mako-0.3.6-py2.6.egg/mako/runtime.py', line 633 in _exec_template
callable_(context, *args, **kwargs)
File 'myblog_templates_pages____base_mak', line 27 in render_body
File 'myblog_templates_pages_my_blog_mak', line 34 in render_body
File '/Users/Awais/virtualenv/lib/python2.6/site-packages/Mako-0.3.6-py2.6.egg/mako/runtime.py', line 181 in __str__
raise NameError("Undefined")
NameError: Undefined
【问题讨论】:
-
您的问题是什么?第一个视图函数的代码与第二个视图函数有什么关系?另外,你说它引发了一个未定义的错误,你能提供一个堆栈跟踪吗?什么是未定义的?
-
嗯,我系统的第一部分是设计一些东西,根据它们的路径以及它们是否在数据库中来呈现页面。第二步是使用其中一个页面,并为该页面(在本例中为博客)创建一些逻辑。当我在第二个视图函数中传递参数然后在模板中调用它们时,我得到一个未定义的错误。我假设这可能与我创建的第一个视图函数有关,我已经在渲染该模板,然后我在第二个视图函数中再次渲染它。我希望这是有道理的。
-
请添加你得到的错误的回溯。
-
您好,我已经添加了上面错误的回溯。
-
在您的 mako 模板的渲染过程中似乎发生了错误。看一下模板,如果你想不出来就发布。我仍然不确定代码的第一部分是否有问题。