我正在尝试制作异步多人游戏。 我的想法是在玩家之间共享模板(' play_game.html')。 因此,当玩家1转弯时,然后出现一个底部,当他按下它时,函数play_game获得一个请求和一个请求,这个,它在转弯处添加一个,所以,它呈现play_game .hmtl与下一轮比赛。问题: 游戏功能总是一个。如果我在浏览器中按F5但我没有按下底部,那么值仍为1。我不知道。
这是代码:
这是函数
@login_required
def play_game(request, flag):
current_user = User.objects.get(user=request.user.id)
game = current_user.game
if int(flag) == 1:
if game.turn < game.players_total:
game.turn = game.turn + 1
else:
game.turn = 1
game.save()
turn = game.turn
context = {
'current_user' : current_user,
'turn' : turn
}
return render(request,'play_game.html', context)
这是模板play_game.html
{% extends 'base.html' %}
{% load staticfiles %}
{% block content %}
{% if current_user.turn == turn %}
<p> your turn <p/>
<li><a href="{% url 'play_game' flag=1 %}"> Move </a></li>
{% endif %}
{% endblock %}
这是网址:
url(r'^game_list/join_to_game/play_game/(?P<flag>[0-9]+)/$', views.play_game, name='play_game'),
另一方面,问题是标志总是一个。 我该怎么办?
由于
答案 0 :(得分:1)
在这一行中出现问题,你总是将标志设置为1:
<a href="{% url 'play_game' flag=1 %}">
尝试将标志作为上下文变量传递给模板:
context = {
'current_user' : current_user,
'turn' : turn,
'flag' : flag
}
然后每次使用添加过滤器点击按钮时,内部模板会增加其值:
<li><a href="{% url 'play_game' flag=flag|add:'1' %}"> Move </a></li>