Передача переменных django в javascript - PullRequest
0 голосов
/ 19 октября 2018

Мне трудно передать переменные из бэкэнда python в javascript.Многие из моих переменных выглядят так в javascript:

if ('{{ user.has_paid_plan}}' == 'True') {
    isPayingUser = true;
} else {
    isPayingUser = false;
}

Это ужасно, и я уверен, что есть гораздо более чистый способ сделать это.Как это сделать?

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

Это может быть странным подходом, но я предполагаю, что один из способов решить эту проблему - передать объект json как переменную, которая будет содержать все остальные переменные.Например:

def user(request):
    user = request.user

    ctx = {
      'isPayingUser': user.is_paying_user()
      'age': user.age
      'username': user.email
    }

    json_ctx = json.dumps(ctx)
    ctx['json_ctx'] = json_ctx

    return render(request, 'template.html', ctx)

Таким образом, у вас есть доступ ко всем переменным django / python, и у вас также есть все переменные, правильно закодированные в json как объект "json_ctx", который вы можете использовать в своем javascript.

0 голосов
/ 20 октября 2018

Давайте сделаем все просто.Вам не нужно использовать какой-либо другой тип ответа, например, JSON или что-то еще.Первое, что вы делаете - передаете значение из бэкэнда.Предполагая, что пользовательская модель имеет поле как has_paid_plan как BooleanField.Если нет, конвертируйте его в BooleanField.

views.py

context = dict()
context['user'] = user_instance
return render(request, 'template.html', context)

template.html

Добавьте это в свой скрипт.

<script>
   .... // other code
    {% if user.has_paid_plan %}
        isPayingUser = true;
    {% else %}
        isPayingUser = false;
    {% endif %}
</script>

Старайтесь быть простыми.Это хорошая практика.Надеюсь, это поможет.

0 голосов
/ 19 октября 2018
<input type='hidden' value='{{ user.has_paid_plan}}' id='has_paid_plan' />


if ($('#has_paid_plan').val() == 'True') {
    isPayingUser = true;
} else {
    isPayingUser = false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...