当前位置: 首页 > 面试题库 >

如何在按钮单击时调用Django函数?

赫连睿
2023-03-14
问题内容

我正在尝试编写Django应用程序,而我却被困在单击按钮时如何调用视图函数。

在我的模板中,我有一个如下所示的链接按钮,单击该按钮会将您带到另一个网页:

<a target="_blank" href="{{ column_3_item.link_for_item }}">Check It Out</a>

单击按钮时,我还想调用Django视图函数(以及重定向到目标网站)。查看功能使数据库中的值增加,该值存储了单击按钮的次数。

column_3_item.link_for_item是到外部网站(如链接 www.google.com
)。现在,单击该按钮时,它将打开一个新窗口,该窗口将您带到google网站。

我想做的就是在单击按钮时也调用Django视图函数,这将更新数据库而不刷新页面。我该如何实现?


问题答案:

这是一种纯JavaScript的简约方法。我使用JQuery,但您可以使用任何库(甚至根本没有库)。

<html>
    <head>
        <title>An example</title>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <script>
            function call_counter(url, pk) {
                window.open(url);
                $.get('YOUR_VIEW_HERE/'+pk+'/', function (data) {
                    alert("counter updated!");
                });
            }
        </script>
    </head>
    <body>
        <button onclick="call_counter('http://www.google.com', 12345);">
            I update object 12345
        </button>
        <button onclick="call_counter('http://www.yahoo.com', 999);">
            I update object 999
        </button>
    </body>
</html>

替代方法

您可以通过以下方式更改链接,而不是放置JavaScript代码:

<a target="_blank" 
    class="btn btn-info pull-right" 
    href="{% url YOUR_VIEW column_3_item.pk %}/?next={{column_3_item.link_for_item|urlencode:''}}">
    Check It Out
</a>

并在您的views.py

def YOUR_VIEW_DEF(request, pk):
    YOUR_OBJECT.objects.filter(pk=pk).update(views=F('views')+1)
    return HttpResponseRedirect(request.GET.get('next')))


 类似资料:
  • 问题内容: 我创建了一个名为functioncalling.php的页面,其中包含两个按钮 Submit 和 Insert 。作为PHP的初学者,我想测试单击按钮时执行的功能。我希望输出出现在同一页面上。因此,我创建了两个功能,每个按钮一个。functioncalling.php的源代码如下: 这里的问题是单击任何按钮后都没有输出。 我到底哪里出问题了? 问题答案: 是的,您在这里需要Ajax。请

  • 我试图从JavaFX WebView中调用JavaScript函数来处理JavaFX按钮单击事件。 我正在使用以下代码,但它不起作用:

  • 我正在使用ASP.NET和JavaScript创建一个计算器。当用户单击按钮时,现在正试图使它对按钮7起作用,它会调用一个javascript函数,以查看用户是否单击了clear按钮、back space按钮,或者他们是否单击了number按钮。如果它是一个数字按钮,则该函数将把数字添加到文本框中。例如,如果用户点击7然后点击8,然后点击*,然后点击1,文本框将显示:78*1。我无法使javasc

  • 问题内容: 在有人对我进行抨击或将其标记下来之前,我已经遍及整个互联网,以查找如何执行此操作(包括关于stackoverflow的相同问题)。我是新手,而且我发现很难学习新概念,所以请对我轻松一点。 我想做的是单击按钮时调用php脚本/函数。如果有帮助,我可以在WAMP中运行它。这是我的代码: the_script.php中包含以下内容: 为什么这不起作用?我听说按钮是客户端等,而PHP是服务器端

  • 编辑:底部的解决方案 这是一个跳棋游戏。单击一个按钮后,它等待单击第二个按钮与之交换。然而,有时你可能不想移动那个按钮,但一旦你点击了它,就没有回头路了,因为我无法禁用它。 在这里的其他帖子中,我看到人们使用 这只是使它在第一次单击后不可见。 这什么都干不了。 这也没什么用。编辑:所有这些方法都用true和false进行了尝试。 私有无效交换(){ 但你也需要 这样它就重新启用了它,或者其他什么,

  • 我已经做了我的代码。但是当用户输入时,它正在调用服务器端的2 button事件。我只想调用一个事件。 我有三个ASP.NET按钮, 注 我已经为btnSaveFile定义了click函数,下面是代码 下面的代码用于调用上面的函数。 键控功能工作正常。但同时,当我按下enter键时,它也在调用服务器端代码。它不应调用。它应该在服务器端调用 怀疑 我总共有3个服务器端按钮,但它只调用了2个为什么?(只