[英]How to pass a django model to a javascript function
我的JavaScript函數需要一些變量(大約10個)。 頁面加載后,我不需要再次調用變量。 我可以使用上下文字典來給他們,如下所示,但是也許可以做得更好。
我的models.py
:
class Mymodel(models.Model):
my_field1 = #
my_field2 = #
...
my_field10 = #
我的views.py
:
def myview(request):
context_dict={}
context_dict['myfield1'] = Mymodel.objects.get(id=1).myfield1
context_dict['myfield2'] = Mymodel.objects.get(id=1).myfield2
context_dict['myfield10'] = Mymodel.objects.get(id=1).myfield10
我的template.html
:
...
<script>
<!--
window.onpageshow = function() {
my_function( '{{ myfield1 }}', '{{ myfield2 }}', ..., '{{ myfield10 }}' );
};
-->
</script>
...
我的javascript.js
:
function my_function(myfield1, myfield2, ..., myfield10) {
//code
}
這些變量是模型的字段,因此我只需要傳遞模型等距即可。 我怎樣才能做到這一點? 是我工作的時候了,我認為我應該使用serialize
但是我不知道如何...
我的template.html
:
...
<script>
<!--
window.onpageshow = function() {
my_function( serializers.serialize("json", {{ mymodelistance }} ));
};
-->
</script>
...
提前致謝
要訪問模型字段,您可以直接使用angular js($ http.get)方法,然后根據需要將其分配給腳本的變量。 但是為此,您將不得不使用Django Deliciouspie,它將允許您序列化隨后可以訪問的數據。
當且僅當您不想對視圖中的數據進行處理時,此答案才有效。
即使您想在保存之前處理數據,也可以使用好吃的水合。
所以這是我的解決方案:
我的views.py
:
def myview(request):
context_dict={}
mymodelistance = Mymodel.objects.filter(id=1)
mymodelistance_json = serializers.serialize('json', mymodelistance)
context_dict['mymodelistance'] = mymodelistance_json
我的template.html
:
...
<script>
window.onpageshow = function() {
my_function( '{{ mymodelistance|safe }}' );
};
</script>
...
我的javascript.js
:
function my_function(mymodelistance) {
var mymodelistance_obj = JSON.parse(flag)
var myfield1 = mymodelistance_obj[0].fields.myfield1;
var myfield2 = mymodelistance_obj[0].fields.myfield2;
...
//code
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.