单击运行/加载Jinja2宏

时间:2014-11-26 17:28:14

标签: jquery flask jinja2

我有一个Jinja2宏,当前在我的主页上立即预加载,尽管内容是隐藏的,只有在用户点击菜单项后才会显示。我想禁用预加载,仅在用户单击菜单项后才加载/显示宏的内容。我不确定执行此操作的最佳方法是通过JQuery还是Jinja2HTML方式执行此操作。

这是我的菜单项。

<li class="my_class">
    <a href="#" data-toggle="my_macro" data-target="#my_macro_id">Call My Macro</a>
</li>

这是我的宏。

{{ macros.my_macro_func(macro_id='my_macro_id' macro_content=('my_macro' | my_macro_link)) }}

这两个目前都位于我的main.html页面

Python / Flask方面,我有:

@app.template_filter(`my_macro_link`)
def my_macro_link_filter_func(input='some_input')
    return Markup( get_values(input) )

1 个答案:

答案 0 :(得分:1)

将宏放在模板中。在Flask中创建一个GetMacro处理程序,并以my_macro_id作为参数来接收您的ajax请求。让你的菜单项onclick指向这个js脚本并做这样的事情......

function GetMacro(my_macro_id) {
    if(window.XMLHttpRequest)
         xmlhttp=new XMLHttpRequest();
    else// code for IE6, IE5
         xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');

     xmlhttp.onreadystatechange=function()
     {
         if (xmlhttp.readyState==4 && xmlhttp.status==200)
         {
             if(xmlhttp.responseText != '')
             {
                 $('#ReturnedHtml').html(xmlhttp.responseText);
             }
         }
     }

     xmlhttp.open("GET","/class/GetMacro?my_macro_id=" + my_macro_id, true);
     xmlhttp.send(); 
}

希望这有帮助!