Python 如何在单击按钮时调用Django函数?
我正试图编写一个Django应用程序,但我一直在思考如何在单击按钮时调用视图函数 在我的模板中,我有一个链接按钮,如下所示,单击它会将您带到不同的网页:Python 如何在单击按钮时调用Django函数?,python,django,django-templates,django-views,Python,Django,Django Templates,Django Views,我正试图编写一个Django应用程序,但我一直在思考如何在单击按钮时调用视图函数 在我的模板中,我有一个链接按钮,如下所示,单击它会将您带到不同的网页: 单击按钮时,我还想调用Django视图函数(以及重新定向到目标网站)。view函数增加数据库中的值,该值存储按钮被单击的次数 列\u 3\u项目。项目的链接是指向外部网站(如www.google.com)的链接。现在,当点击该按钮时,它会打开一个新窗口,将您带到谷歌网站 我想做的是在单击按钮时调用Django view函数,该按钮在不刷新页
单击按钮时,我还想调用Django视图函数(以及重新定向到目标网站)。view函数增加数据库中的值,该值存储按钮被单击的次数
列\u 3\u项目。项目的链接是指向外部网站(如www.google.com)的链接。现在,当点击该按钮时,它会打开一个新窗口,将您带到谷歌网站
我想做的是在单击按钮时调用Django view函数,该按钮在不刷新页面的情况下更新数据库。我怎样才能做到这一点呢?这里是一个纯javascript的、最低限度的方法。我使用JQuery,但您可以使用任何库()
以下答案可能对问题的第一部分有所帮助:
我个人使用了两种可能的解决方案
1.不使用表单
<button type="submit" value={{excel_path}} onclick="location.href='{% url 'downloadexcel' %}'" name='mybtn2'>Download Excel file</button>
我不明白你的问题。您的代码在任何列\u 3\u项处调用view函数。在您的urlconf中映射到\u项的链接。添加到Daniel的注释:如果您需要单击->“实时”更新目录,而不刷新页面,您可能需要重写您的问题。如果您有一个指向该链接的视图,那么您已经拥有了所需的内容。很抱歉造成混淆。列\u 3\u项目。项目的链接是指向外部网站的链接(例如:-www.google.com)。现在,当点击这个按钮时,会打开一个新窗口,进入谷歌网站。我想做的是在点击按钮时调用django view函数,该函数更新数据库而不刷新页面。你看过了吗?你可以用很多方法来实现,但是如果你不想重新加载/更改页面,我认为你必须依赖javascript(例如,对视图进行ajax调用,该视图使用用于打开新页面的相同标记更新计数器)。使用javascript是否存在问题?如果是否决,请在评论中解释原因,以便我可以改进我的回答。非常感谢。我使用了替代方法,它的效果与预期一样完美。使用Django的目的是避免使用其他语言。对于js,我很抱歉,但是如果您在单击按钮时使用Django,我们希望使用D触发jango,但不是js。请帮帮我!@KuneMohith然后请遵循另一种方法,它不需要javascript。除此之外,我不认为Django的目的是消除使用其他语言。你不能在客户端运行“Django”(python)。
<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>
def YOUR_VIEW_DEF(request, pk):
YOUR_OBJECT.objects.filter(pk=pk).update(views=F('views')+1)
return HttpResponseRedirect(request.GET.get('next')))
<button type="submit" value={{excel_path}} onclick="location.href='{% url 'downloadexcel' %}'" name='mybtn2'>Download Excel file</button>
<form action="{% url 'downloadexcel' %}" method="post">
{% csrf_token %}
<button type="submit" name='mybtn2' value={{excel_path}}>Download results in Excel</button>
</form>
path('excel/',views1.downloadexcel,name="downloadexcel"),