如何将参数传递给这个Flask Jinja模板函数?

2024-03-29 12:08:25 发布

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

这是可行的,但是我想把参数变量值传递给return render_template()中的部分,这样我就可以重用test(),我该怎么做呢?在

""" Test.html """
@app.route('/test')
def test():
    """Renders the careers page."""
    return render_template(
        'content/loader.html',
        title='Test',
        year=datetime.now().year,
        message='Your Test page.',
        main_nav_active_ = '',
        layout_template = '/layouts/default.html',
        content_template = 'clarity.html'
    )

我希望能够使用这样的功能,基于路线

^{pr2}$

Tags: thetestapp参数returndefhtmlpage
2条回答

只需提取test

def test(
        template='content/loader.html',
        title='Test',
        year=None,
        message='Your Test page.',
        main_nav_active_='',
        layout_template='/layouts/default.html',
        content_template='clarity.html'
    ):
    """Renders a particular page type."""
    return render_template(
        template,
        title=title,
        year=year if year is not None else datetime.now().year,
        message=message,
        main_nav_active_=main_nav_active_,
        layout_template=layout_template,
        content_template=content_template
    )

然后,您可以使用app.add_url_rule将其注册为URL,或将其用作其他路由定义的一部分:

^{pr2}$
def test(**kwargs)
    """Renders the careers page."""
    return render_template(
        'content/loader.html',
        **kwargs
    )

@app.route('/test2')
def test2():
    return test(title='test2',year=datetime.now().year,message='Your Test page.', main_nav_active_='', layout_template='/layouts/default.html', content_template='clarity.html')

@app.route('/test3')
def test3():
    return test(title='test3',year=datetime.now().year,message='Your Test page3.', main_nav_active_='', layout_template='/layouts/default.html', content_template='foo.html')

相关问题 更多 >