使用' onclick'更新MySQL Django Project

时间:2016-09-21 12:15:31

标签: javascript python html mysql django

我对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;

我尝试了几件事:

  • 执行RAW SQL(根据此示例)
  • 更新Django模型(根据已注释掉的部分)
  • 执行了一个外部.py脚本(从Bash Comamnd中运行得非常好)
  • 看着使用&#39;表格&#39; ..但从未真正理解。

最终,我觉得问题在于URL和请求与视图之间的参数传递?!?!

非常感谢任何帮助,一些简单的例子会很棒。

由于

1 个答案:

答案 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。如果存在,则将目标字段增加一个。然后保存您的对象。最后使用按钮和内容返回到您的模板。

清楚吗?你需要在上面的代码中解释一下吗?