【问题标题】:replace parameter using jquery使用jquery替换参数
【发布时间】:2016-03-03 19:11:38
【问题描述】:

我正在使用 python 和 jinja。当我渲染模板时,我发送了两个这样的参数:

return render_template('mod_page/index.html', 
                types_first = utils.questions_first(), 
                types_second = utils.questions_second())

questions_firstquestions_second 是两个相同的函数,如下所示:

 def questions_first(self):
     return ['Name','Surname', 'Phone'] 

在索引页面我有一个这样的标签:

<html lang="en">
...

我想用 jQuery 获取lang 属性,然后检查它是否为'en' 我想使用questions_first 如果它是'sr' 我想使用questions_second

我的问题是如何替换 jinja 代码中的参数types_first 或放在那里,我不知道该怎么做,我试着这样做:

<script>
$(document).ready(function(e){
  var language = $('html').attr('lang');
  var selectedFunction;
  if(language == "sq"){ 
    selectedFunction = "sq";}
  else{
    selectedFunction = "sr"; }
</script>

....
    <p> Questions: </p>
    {{ _({% for type in types_first %}) }}
    <div class="checkbox">
        <label><input type="checkbox" value="{{ type }}">{{ type }}</label>
    </div>
    {% endfor %} 

【问题讨论】:

    标签: javascript jquery python jinja2


    【解决方案1】:

    第一个解决方案(更好):

    如果你想改变语言,你可以使用 i18next 框架(http://i18next.com/docs/)。这是更简单的解决方案。

    第二种解决方案(更糟):

    通过 jQuery 选择要更改的元素 -> 使用 empty() 函数 -> 渲染具有更改值的元素并使用 append() 将其分配给选择器

    您也可以结合使用这两种解决方案。编写函数以重新渲染模板并动态更改语言。例如:

    fn_or_elt.empty();
    fn_or_elt.append(markup);
    fn_or_elt.i18n();
    

    【讨论】:

    • 我已经实现了更改语言,正如我所说的参数 lang 可以是:en 或 sr。所以基于此我想改变jinja里面的参数? @hya
    • 您可以只选择输入并用 jQuery 替换值,但我建议使用 jinja2 端口的 Nunjucks,它支持客户端渲染 (mozilla.github.io/nunjucks/getting-started.html)。
    猜你喜欢
    • 1970-01-01
    • 2016-02-20
    • 2011-11-02
    • 1970-01-01
    • 2012-09-02
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    相关资源
    最近更新 更多