我对django和web dev总体上非常新,所以请耐心等待。
我已经为我的本地足球队创建了一个带有MySQL后端的简单网站,并希望创建一个页面来更新游戏的分数(存储在桌面上),只需单击一个按钮(将当前分数增加+ 1) )。 我毫不怀疑这是非常简单的,但经过WEEKS搜索类似的帖子后,似乎没有什么对我有用(至少我无法理解)。
我有一个模板,可以创建一个按钮,其中包含需要更新的记录的ID:
<a href="{% url livegame_update %}?value={{stat.id}}?updatetype=goals" class="btn btn-success" role="button" onclick="alert({{stat.id}})" id={{stat.id}}>Goal</a>
这指向此网址:
url(r'^livegame_update', 'steelers_fc.players.views.livegame_update', name='livegame_update'),
反过来执行此功能的视图;
def livegame_update(request):
StatID = request.GET.get('value','1')
StatType = request.GET.get('updatetype','1')
SQL = "update players_statistics set " + StatType + " = " + StatType + " + 1 where id = " + StatID + ";"
#stat_edit = statistics.objects.get(id=StatID)
#stat_edit.goals = stat_edit.goals + 1
#stat_edit.save() # save object
cursor = connection.cursor ()
cursor.execute (SQL)
connection.commit()
cursor.close ()
connection.close ()
return render_to_response
最终,上面的SQL将最终成为: &#34; 更新players_statistics设定目标=目标+ 1,其中id = 99 &#34;
我尝试了几件事:
最终,我觉得问题在于URL和请求与视图之间的参数传递?!?!
非常感谢任何帮助,一些简单的例子会很棒。
由于
答案 0 :(得分:0)
嗯......首先,我不明白你为什么要创建游标和东西。
我会尽力以最简单的方式帮助你。
第1步(如果您没有型号)
创建模型
class Match(models.Model):
goals = models.IntegerField(default=)
# Add as many fields as you need, eg. Teams / Scorer / and other stuff
def __str___(self):
return self.goals
第2步 - urls.py /你有,但有些部分缺失
url(r'^livegame_update/(?P<match_id>[\d]+)/$', 'steelers_fc.players.views.livegame_update', name='livegame_update'),
说明:正如您所看到的,您的url现在将match_id作为传递给视图的参数。 [\ d] + - 的部分 - 表示必须是数字,加上意味着数量不限。
第3步 - 您的观点(更新)
def livegame_update(request, match_id):
try:
match = Match.objects.get(id=match_id)
except Match.DoesNotExist():
return render(request, 'your_template.html', {'error': 'match with given id dosnt exist})
match.goals += 1
match.save()
return render(request, 'your_template.html', {'msg': 'incremented score'})
这就是它的作用:找到一个在参数( match_id )中给出id的Match对象。如果找不到,请返回模板,并传递带有错误的dict。如果存在,则将目标字段增加一个。然后保存您的对象。最后使用按钮和内容返回到您的模板。
清楚吗?你需要在上面的代码中解释一下吗?