我刚开始使用金字塔并在加载视图时遇到问题。我想加载一个基于从数据库中获取的变量的视图,就像我的 PHP 解决方案一样:rewrite url with htaccess
我已经构建了一个可以执行此操作的脚本,但我很确定这不是正确的方法。我认为当我在真实站点中使用它时,它会变得非常复杂和混乱。有人可以解释一下如何正确地解决这个问题或将我指向其他解决方案吗?
我当前的脚本:
config.add_route('home', '/')
config.add_route('admin_home', '/admin')
config.add_route('admin_pages', '/admin/pages')
config.add_static_view(name='static', path='website:static')
config.add_route('view_loader', '/*url')
视图.py
class ViewLoader(object):
def __init__(self, request):
self.request = request
@view_config(route_name="view_loader", renderer="templates/view_loader.pt")
def view_loader(self):
request = self.request
url = "/%s" % request.matchdict["url"]
page = DBSession.query(Pages).filter_by(url=url).one()
return dict(title=page.title, include=page.template)
view_loader.pt
<!DOCTYPE html>
<html>
<body>
<metal:main use-macro="load: ${include}"></metal:main>
</body>
</html>
系统理念:
管理员可以在带有随机 url 的 cms 中创建页面,并且必须选择一个模板。系统必须生成这些页面。
- url = /random/random -> 在 db 中查找模板 -> 渲染 template_1
- url = /random2/random2 -> 在 db 中查找模板 -> 渲染 template_2
所以我想在调用类/方法以确定必须渲染哪个模板之后渲染模板