![](/img/trans.png)
[英]How to get the value of a {{variable}} of django template in javascript?
[英]Django Template Variable Value Not Retrievable in Javascript / jQuery
當我做這樣的事情時:
$("#show").click(function(){
{% for p in collection %}
options.push({
'href' : '{{ p.id }}',
});
{% endfor %}
});
我可以檢索Django模板變量的值。
但是,當我嘗試進行其他操作時:
$('[name=test]').live('click', function() {
alert('{{ current_state }}');
var msg = '<div class="userName"> {{ current_user }} </div>';
alert('Message' + msg);
});
我無法從中檢索Django模板變量的值。
這里出了什么問題? 我有時會在javasript / jQuery中檢索Django模板變量時遇到這個問題。
編輯
當我在所有其他內容之上執行以下代碼行時,整個javasript無法正常工作。 知道為什么嗎?
$('body').data('current_user_id', {{ current_user_id }});
$('body').data('current_user', {{ current_user }});
通常,JS文件是完全靜態的,因此,您不能在其中插入Django變量-它不能那樣工作。
您可以采取的一種方法是讓Django在已呈現的HTML模板中“停放” JS所需的變量,然后您可以按需獲取它們並在JS代碼中使用它們
例如,在示例中使用javascript的模板中,添加:
<script type="text/javascript">
// attach variables from Django to the body node of the document
$('body').data('current_state', {{current_state}});
$('body').data('current_user', {{current_user}});
</script>
然后在您的JS中,從數據映射中提取值:
$('[name=test]').live('click', function() {
alert($('body').data('current_state'));
var msg = '<div class="userName">' + $('body').data('current_user') + '</div>';
alert('Message' + msg);
});
如果您不了解$ .data(), 請閱讀此內容
您的方法也對我有用,但是我正在加載jQuery庫的同一頁面中訪問變量。 在我看來:
from myapp.models import MyModel
from django.views.generic import TemplateView
class HomeView(TemplateView):
template_name = 'base.html'
def get_context_data(self, **kwargs):
rows = MyModel.objects.filter(title_slug='titleslug')
context = super(HomeView, self).get_context_data(**kwargs)
context['myvariables'] = []
for row in rows
context['myvariables'].append(row.somefieldval)
return context
在我的模板中:
<script>
options = []
{% for var in myvariables %}
imagesurls.push('{{var|safel}}');
{% endfor %}
alert(options);
</script>
我已經知道出了什么問題。 這是因為使用了Ajax負載。 因此,當主頁請求將頁面加載到帶有Ajax加載的標記中時,Django模板變量只能從子頁面顯示,但是javascript是寫在主頁中的。
因此,要解決此問題,必須將模板變量傳遞到主頁而不是子頁面中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.