将django变量传递给javascript

时间:2018-10-19 06:13:08

标签: javascript python jquery django django-templates

我在将变量从python后端传递到javascript时遇到了困难。我的很多变量在javascript中看起来像这样:

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

这很丑陋,我敢肯定有一种更干净的方法可以做到这一点。应该怎么做?

3 个答案:

答案 0 :(得分:1)

<input type='hidden' value='{{ user.has_paid_plan}}' id='has_paid_plan' />


if ($('#has_paid_plan').val() == 'True') {
    isPayingUser = true;
} else {
    isPayingUser = false;
}

答案 1 :(得分:1)

这可能是一个奇怪的方法,但是我想解决这个问题的一种方法是将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中使用它。

答案 2 :(得分:1)

让我们保持简单。您不必使用其他任何响应类型,例如JSON或其他任何类型。您要做的第一件事是从后端传递值。假设用户模型的布尔字段为“ has_paid_plan”。如果没有,请将其转换为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>

尝试保持简单。这是一个好习惯。希望这会有所帮助。