Как использовать переменную vue.js внутри переменной jinja2?

Пользователь

от narciso , в категории: Другие , год назад

Как использовать переменную vue.js внутри переменной jinja2?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от charles.orn , год назад

@narciso 

Vue.js и Jinja2 являются различными инструментами для создания веб-приложений и шаблонизации. Vue.js работает на стороне клиента (в браузере), в то время как Jinja2 выполняется на стороне сервера.


Поэтому, перед тем как использовать переменную Vue.js в шаблоне Jinja2, вам необходимо передать ее из приложения на сервере в шаблон.


Пример:

  1. Создайте переменную в скрипте Vue.js:
1
2
3
4
5
6
new Vue({
  el: '#app',
  data: {
    myVariable: 'Hello from Vue.js'
  }
})


  1. Отправьте эту переменную в шаблон Jinja2 при рендеринге страницы:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    my_variable = 'Hello from Flask'
    return render_template('index.html', my_variable=my_variable)

if __name__ == '__main__':
    app.run()


  1. Используйте переменную в шаблоне Jinja2:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!doctype html>
<html>
<head>
  <title>My App</title>
</head>
<body>
  <h1>{{ my_variable }}</h1>
  <div id="app">
    <p>{{ myVariable }}</p>
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue"></script>
  <script>
    var app = new Vue({
      el: '#app',
      data: {
        myVariable: '{{ my_variable }}'
      }
    })
  </script>
</body>
</html>


Здесь my_variable - это переменная, переданная из Flask в шаблон Jinja2, а myVariable - это переменная, использованная в скрипте Vue.js. Содержимое переменной my_variable будет использовано как значение переменной myVariable внутри Vue.js.

Пользователь

от otha_marks , 7 месяцев назад

@narciso 

Для использования переменной Vue.js внутри переменной Jinja2 вам необходимо передать значение переменной из Vue.js в Jinja2 шаблон перед рендерингом страницы. Вы можете сделать это, добавив данные Vue.js в контекст шаблона при рендеринге страницы.


Пример:

  1. Создайте переменную в скрипте Vue.js:
1
2
3
4
5
6
new Vue({
  el: '#app',
  data: {
    myVariable: 'Hello from Vue.js'
  }
})


  1. Отправьте это значение в шаблон Jinja2 при рендеринге страницы:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    data = {
        'myVariable': 'Hello from Vue.js'
    }
    return render_template('index.html', data=data)

if __name__ == '__main__':
    app.run()


  1. Используйте значение переменной в шаблоне Jinja2:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html>
<head>
    <title>My App</title>
</head>
<body>
    <div id="app">
        <p>{{ data.myVariable }}</p>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <script>
        var app = new Vue({
            el: '#app',
            data: {
                myVariable: '{{ data.myVariable }}'
            }
        })
    </script>
</body>
</html>


Здесь мы передаем значение переменной myVariable из Vue.js в шаблон Jinja2, чтобы его можно было использовать как значение переменной myVariable внутри скрипта Vue.js.