将变量从模板传递到视图

时间:2015-01-26 19:39:37

标签: django templates view

好的,我正在网站上工作,我需要一种方法来将分数保存到数据库中。我从iFrame获得分数,但我不知道如何将它传递给Django视图以将其保存到数据库中。 这是我用来获得分数的模板:

{% block content %}
<script>
  /* global $ */
  $(document).ready(function() {
    'use strict';
    $(window).on('message', function(evt) {
      //Note that messages from all origins are accepted
      //Get data from sent message
      var msg = evt.originalEvent.data;
      if(msg.messageType == "SCORE")
      {
        msg.score
        ???
      }
    });
  });
</script> 
<iframe id="game_iframe" src={{gameurl}}></iframe>
{% endblock %}

我将使用某种模型来最终保存分数,但现在我只是想将此变量从模板传递到视图。

1 个答案:

答案 0 :(得分:1)

您需要做的是设置一个Ajax请求&amp;在django视图中处理得分等。

阅读本文&amp;它应该给你所需要的一切; http://www.tangowithdjango.com/book/chapters/ajax.html

你可能最终会得到这样的JS;

{% block content %}
<script>
  /* global $ */
  $(document).ready(function() {
    'use strict';
    $(window).on('message', function(evt) {
      //Note that messages from all origins are accepted
      //Get data from sent message
      var msg = evt.originalEvent.data;
      if(msg.messageType == "SCORE")
      {
        $.get('/game/save_score/', {score: msg.score}, function(data){
           $('#score').html(data);
       });
      }
    });
  });
</script> 
<iframe id="game_iframe" src={{gameurl}}></iframe>
{% endblock %}

观点;

def save_score(request):
    context = RequestContext(request)
    score = None
    if request.method == 'GET':
        score = request.GET['score']

    # Do whatever you need to save the score.

    return HttpResponse(score)