在金字塔中使用多个变色龙宏正确吗?

2024-04-27 12:05:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在主文件中使用许多宏(调用)。从主菜单调用页眉、正文和页脚。你知道吗

我用金字塔框架和变色龙。你知道吗

这是主页.pt,调用head、base和footer的主文件。你知道吗

<metal:macro use-macro="head">
</metal:macro>

<metal:macro use-macro="base">
 <!-- HOME CONTENT-->
.
.
.
</metal:macro><!--metal macro base end-->

<metal:macro use-macro="footer">
</metal:macro>

头部和底部有自己的文件,工作良好,但页脚没有 这是头.pt

<!DOCTYPE html>
<html lang="en">
<head>
    <!--Bootsrap 4 CDN-->
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
    <link rel="stylesheet"
    href="${request.static_url('proyect_name:static/ds_style.css') }"/>
</head>

这是页脚.pt

</body>
</html>

视图.py,在棱锥体中,将管线与渲染文件连接是必需的


from pyramid.renderers import get_renderer
from pyramid.interfaces import IBeforeRender
from pyramid.events import subscriber
@subscriber(IBeforeRender)
def globals_factory(event):

    master = get_renderer('templates/head.pt').implementation()
    event['head'] = master
    master = get_renderer('templates/base.pt').implementation()
    event['base'] = master
    master = get_renderer('templates/pie.pt').implementation()
    event['pie'] = master
    master = get_renderer('templates/base_dashboard.pt').implementation()
    event['base_dashboard'] = master


@view_defaults(renderer='templates/home.pt')
class DSViews:
    def __init__(self, request):
        self.request = request
        self.logged_in = request.authenticated_userid

    @view_config(route_name='home', renderer='templates/home.pt')
    def home(self):
        return {'name': 'home'}

    @view_config(route_name='head', renderer='templates/head.pt')
    def head(self):
        return {'name': 'head'}

    @view_config(route_name='base', renderer='templates/base.pt')
    def base(self):
        return {'name': 'base'}

    @view_config(route_name='pie', renderer='templates/pie.pt')
    def pie(self):
        return {'name': 'pie'}

文件的一部分,其中定义了公共路线

    #permited uris
    config.add_route('home', '/')
    config.add_route('login', '/login')
    config.add_route('logout', '/logout')
    config.add_route('dashboard', '/dashboard')
    ##internal parts
    config.add_route('base', '/base')
    config.add_route('head', '/head')
    config.add_route('pie', '/pie')

从debbuger那里

chameleon.exc.ParseError: "unprintable ParseError object"

Tags: nameselfmasteraddptconfigbasedef