我在将变量从python后端传递到javascript时遇到了困难。我的很多变量在javascript中看起来像这样:
if ('{{ user.has_paid_plan}}' == 'True') {
isPayingUser = true;
} else {
isPayingUser = false;
}
这很丑陋,我敢肯定有一种更干净的方法可以做到这一点。应该怎么做?
答案 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>
尝试保持简单。这是一个好习惯。希望这会有所帮助。