簡體   English   中英

將 django 變量傳遞給 javascript

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM