Dev*_*Dev 27 python django django-templates django-views
我正在尝试编写一个Django应用程序,但我仍然坚持在单击按钮时如何调用视图函数.
在我的模板中,点击后我有一个链接按钮,将您带到另一个网页.
<a target="_blank" href="{{ column_3_item.link_for_item }}">Check It Out</a>
Run Code Online (Sandbox Code Playgroud)
单击按钮时,我也想调用Django视图功能(同时重定向到目标网站).视图函数用于递增数据库中的值,该值存储单击按钮的次数.
有谁能帮助我如何实现这一目标.
编辑: -
对困惑感到抱歉.column_3_item.link_for_item是指向外部网站的链接(例如: - www.google.com).现在,当点击该按钮时,它会打开一个新窗口,该窗口将转到谷歌网站.我想要做的是在单击按钮时调用django视图函数,该按钮更新数据库而不刷新页面.
谢谢
fur*_*ins 32
这是一个纯粹的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>
Run Code Online (Sandbox Code Playgroud)
替代方法
您可以通过以下方式更改链接,而不是放置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>
Run Code Online (Sandbox Code Playgroud)
在你的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')))
Run Code Online (Sandbox Code Playgroud)
Mbe*_*reL 18
我个人使用了两种可能的解决方案
1.不使用表格
<button type="submit" value={{excel_path}} onclick="location.href='{% url 'downloadexcel' %}'" name='mybtn2'>Download Excel file</button>
Run Code Online (Sandbox Code Playgroud)
2.使用表格
<form action="{% url 'downloadexcel' %}" method="post">
{% csrf_token %}
<button type="submit" name='mybtn2' value={{excel_path}}>Download results in Excel</button>
</form>
Run Code Online (Sandbox Code Playgroud)
urls.py 应该有这个
path('excel/',views1.downloadexcel,name="downloadexcel"),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108472 次 |
| 最近记录: |