使用jquery替换参数

时间:2016-03-03 19:11:38

标签: javascript jquery python jinja2

我正在使用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 1}}。

我的问题是如何在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 %} 

1 个答案:

答案 0 :(得分:0)

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

如果您想更改lang,可以使用i18next框架(http://i18next.com/docs/)。这是一个更简单的解决方案。

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

通过您想要更改的jQuery元素进行选择 - &gt;使用empty()函数 - &gt;渲染具有更改值的元素,并使用append()

将其指定给选择器

您也可以组合这两种解决方案。编写函数以重新渲染模板并动态更改语言。 e.g:

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