flask html 模板继承,动态导航条元素-从Flask传递到Jinja-继承的布局模板

环境

:Python 3.6,烧瓶1.02,Jinja2

目标:

在layout.html(由content.html扩展)中创建动态菜单

然而,动态元素的url通常需要传递一个参数

发布声明

:

在呈现模板时,如何在jinja模板中传递url的参数?

我觉得我需要jinja中str().format的语法。

我试着:

1。将每个部分作为单独的值传递:

menus = [{'url': 'func_name', 'menu_title': 'title', 'param': 'param_name', 'param_val': 'param_value'}]

return render_template('content1.html', menus=menus]

在Jinja我试着这样称呼它:(我也试过不加加号和双引号)

{{ url_for(func_name), param_name+ "=" + param_val }}

在渲染过程中,它会给出

url_for()接受1个位置参数,但给出了2个

2。尝试使用{%set var_name:passed_variable%}

在服务器端定义的第一个菜单版本上构建,我试图在jinja中设置变量,但也失败了。

menus = [{'url': 'func_name', 'menu_title': 'title', 'param': 'param_name', 'param_val': 'param_value'}]

return render_template('content1.html', menus=menus]

金加

{% for menu in menus %}

{% set url = menu.get('url') %}

{% set param = menu.get('param') %}

{% set value = menu.get('param_val') %}

{% url_for(url, param + "=" + value %}

但也没用。

如果我给url_指定一个参数作为语法(不是硬连接的字符串),我就无法添加参数。

三。试图将URL的全部内容作为字符串传递:

menus={'url_string': " 'func_name', param_name=param_value"}

但它又失败了,因为url_for syntacs把整个放在了撇号之间,我不需要在最后加上撇号。

如果我为每个内容页面创建另一个导航条模板,它可能会起作用——但通过这种移动,我可以简单地将导航条移动到内容页面中。不过,这似乎很枯燥。

Stack Overflow topic

因此,问题是:

我怎么能通过

param_id=paramval['id']

用于呈现期间语法的url

{{ url_for('edit_question', param_id=paramval['id']) }}

代码/结构如下:

layout.html格式

{% for menu in menus %}

{% for key, value in menu.items() %}

{{ key }}

{% endfor %}

{% endfor %}

{% block content %}

{% endblock %}

content1.html内容

{% extends 'layout.html' %}

{% block content %}

content

{% endblock %}

content2.html网站

{%extends'layout.html'%}

{%block content%}

内容

{%endblock%}

App.Py

@app.route('/')

def index():

menus = [{'menu_title1': 'menu_func_name1'}]

return render_template('content1.html', menus=menus)

@app.route('/menu_details/')

def show_details_of_menu(menu_nr):

menus = [{'menu_title3': 'menu_func_name3', 'menu_param_name': 'menu_param_value'}

return render_template('content2.html', menus=menus)

对不起,文字墙..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值