将变量从模板传递到视图
Passing variables from template to 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 %}
我最终会使用某种模型来保存分数,但现在我只想将这个变量从模板传递到视图。
您需要做的是在 django 视图中设置 Ajax 请求并处理分数等。
读一读,它应该能为您提供所需的一切; 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)
好的,我正在做一个网站,我需要一种将分数保存到数据库的方法。我从 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 %}
我最终会使用某种模型来保存分数,但现在我只想将这个变量从模板传递到视图。
您需要做的是在 django 视图中设置 Ajax 请求并处理分数等。
读一读,它应该能为您提供所需的一切; 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)