最近是用django开发前端发现问题,使用message发送到前端的时候,需要一个弹出层,但使用alert总是会阻断前端的进程,这样就导致,页面效果下降,在网上找了很多办法,都是使用这个阻塞进程,没找到怎么不让它阻塞的.
最后总结是因为在执行js代码的位置有关系,每次都会加载那里,然后就会阻断,页面才会继续向下渲染.
#这是部分的函数代码
username = request.GET.get('name1')
new_id=request.GET.get('new_id') #邀请码的值
print(username)
print(new_id)
if len(username) !=0 and len(new_id) != 0:
cursor = connection.cursor()
cursor.execute('select * from huod where uname="%s"' % (username)) #查询新玩家是否合法,
user = list(cursor.fetchall())
if user and user[0][1] > time:
#判断是否已经领取过了
if len(user[0][2])==0 :
#新用户存在,判断邀请码合法性
cursor.execute('select uname from huod where ujdk="%s"' % (new_id))
old_user_list=cursor.fetchall()
old_user=old_user_list[0][0]
print(old_user)
# print("邀请他的老用户:"+ old_user)
if old_user:
print("ujdk存在")
cursor.execute('select num from huod where uname="%s"' % (old_user))
old_user_num = cursor.fetchall()
old_num = list(old_user_num)[0][0]
new_num = old_num + 1
print(new_num)
#统计老玩家的邀请数量,给他
cursor.execute('update huod set num=%s where uname="%s"' % (new_num,old_user))
cursor.execute('update huod set ujdk=8 where uname="%s"' % (username))
cursor.close()
title = '恭喜您参加活动成功!祝您游戏愉快!'
messages.success(request, title)
return render(request, 'test.html')
else:
title = '邀请码不合法,请重新输入!'
messages.success(request, title)
return render(request, 'test.html')
else:
title = '您已经参加过该活动了哦!'
messages.success(request, title)
return render(request, 'test.html')
else:
title = '该用户不存在或已经是老玩家了,请重新输入'
messages.success(request, title)
return render(request, 'test.html')
else:
title = '请输入用户名和邀请码'
messages.success(request, title)
return render(request,'test.html')
#这里就是需要将提示信息发给前端用户.
最后就是修改前端js代码和他的位置:
#将触发的这一段代码,放到了html页面的最下面最后在进行加载,调用
{% if messages %}
<script>
window.onload=function(){
{% for msg in messages %}
alert('{{msg.message}}');
{% endfor %}
}
</script>
{% endif %}
再次执行后效果:可以看到后面是有背景了,渲染了,而不是白色阻断的效果.