簡體   English   中英

如何將Django模型傳遞給j​​avascript函數

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

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