python给js变量赋值_将动态Javascript变量传递给Django / Python

为了避免刷新页面,是的,您将需要AJAX.我通常不喜欢在答案中建议库太多,但是,为了便于跨浏览器兼容,我建议使用

jQuery.

使用jQuery就可以了

在你的django模板里面

...

var URL = "{% url 'my_view_that_updates_pieFact' %}";

...

稍后的…

您需要通过AJAX将数据POST或GET到服务器.为了更加RESTful,每当我需要将数据发送到服务器时,我都使用POST. jQuery通过POST为URL提供了AJ001数据的$.post()便利功能.这三个参数是URL,要发送的数据(作为JavaScript对象;如果您不熟悉JavaScript,请考虑python词典),以及服务器发回响应后的回调函数.

function updatePieFact(){

var data = {'pieFact': pieFact};

$.post(URL,data,function(response){

if(response === 'success'){ alert('Yay!'); }

else{ alert('Error! :('); }

});

}

.click()函数与在html属性中指定onlick基本相同.两个click事件都会按预期更新pieFact,然后调用updatePieFact()将pieFact的值发送到服务器.

$(document).ready(function(){

$('#bttnMinus').click(function(){

pieFact *= 0.9;

updatePieFact();

});

$('#bttnPlus').click(function(){

pieFact *= 1.1;

updatePieFact();

});

});

在views.py中

由于我在JavaScript中使用了$.post()函数,Django将要接收的请求将有一个“POST”方法,所以我检查以确保该方法确实是POST(这意味着如果有人使用GET请求访问此视图的URL,他们将不会更新任何内容).一旦我看到请求实际上是一个POST,我检查是否键’pieFact’在dict request.POST中.

还记得我在javascript中将变量数据设置为{‘pieFact’:pieFact}吗?那个javascript就成了request.POST python字典.所以,如果在javascript中我使用了var data = {‘hello’:pieFact} ;,那么我会在request.POST中检查’hello’是否相反.一旦我看到pieFact在request.POST字典中,我就可以获得它的值,然后用它做一些事情.如果一切都成功,我会返回一个带有’success’字符串的HttpResponse.这与javascript中的检查相关联:if(响应===’成功’).

def my_view_that_updates_pieFact(request):

if request.method == 'POST':

if 'pieFact' in request.POST:

pieFact = request.POST['pieFact']

# doSomething with pieFact here...

return HttpResponse('success') # if everything is OK

# nothing went well

return HttpRepsonse('FAIL!!!!!')

希望这会让你指出正确的方向.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值