[英]Passing django variables to javascript
我很難將變量從 python 后端傳遞到 javascript。我的很多變量在 javascript 中看起來像這樣:
if ('{{ user.has_paid_plan}}' == 'True') {
isPayingUser = true;
} else {
isPayingUser = false;
}
這很丑陋,我相信有一種更簡潔的方法可以做到這一點。 應該怎么做?
<input type='hidden' value='{{ user.has_paid_plan}}' id='has_paid_plan' />
if ($('#has_paid_plan').val() == 'True') {
isPayingUser = true;
} else {
isPayingUser = false;
}
這可能是一種奇怪的方法,但我想解決這個問題的一種方法是將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中使用它。
讓我們保持簡單。 您不必使用任何其他響應類型,如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>
盡量保持簡單。 這是一個很好的做法。 希望這可以幫助。
另一個解決方案:
<script>
const isAuthenticated = ${str(user.is_authenticated).lower()}
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.