Django:如何从模板调用视图函数?
Posted
技术标签:
【中文标题】Django:如何从模板调用视图函数?【英文标题】:Django: How can I call a view function from template? 【发布时间】:2013-07-10 01:24:46 【问题描述】:我有一个关于如何从模板 html 按钮调用视图函数的问题?像 onclick 功能? 这是模板:
<input id="submit" type="button" onclick="xxx" method="post" value="Click" />
views.py 是:
def request_page(request):
...do something...
return render_to_response("/directory.html", )
非常感谢。
【问题讨论】:
【参考方案1】:假设您想在用户单击“单击”按钮时从 html 文本框中的用户输入中获取一个值,然后调用您在 mypythoncode.py 中编写的 python 函数 (mypythonfunction)。请注意,“btn”类是在 css 文件中定义的。
在templateHTML.html中:
<form action="#" method="get">
<input type="text" value="8" name="mytextbox" size="1"/>
<input type="submit" class="btn" value="Click" name="mybtn">
</form>
view.py 内部:
import mypythoncode
def request_page(request):
if(request.GET.get('mybtn')):
mypythoncode.mypythonfunction( int(request.GET.get('mytextbox')) )
return render(request,'myApp/templateHTML.html')
【讨论】:
这是一个很好的答案 - 没有更多的投票感到惊讶......你在自己的项目中使用过这个吗? 我很高兴它有用。是的,我在 Github 上上传了一个项目,我在那里使用它。 github.com/MahshidZ/ArchivIT 小心,GET 和 HEAD 请求应该是安全的/幂等的。 w3.org/Protocols/rfc2616/rfc2616-sec9.html 输入后的% csrf_token %呢?【参考方案2】:一种选择是,您可以用form
包裹submit
按钮
类似这样的:
<form action="% url path.to.request_page %" method="POST">
<input id="submit" type="button" value="Click" />
</form>
(去掉onclick
和method
)
如果您想加载页面的特定部分,而不需要重新加载页面 - 您可以这样做
<input id="submit" type="button" value="Click" data_url/>
在submit
监听器上
$(function()
$('form').on('submit', function(e)
e.preventDefault();
$.ajax(
url: $(this).attr('action'),
method: $(this).attr('method'),
success: function(data) $('#target').html(data)
);
);
);
【讨论】:
是的.. 这就是 ajax 提交正在做的事情。你的问题不清楚,所以我添加了两个答案 我想知道有没有办法在 Django 中进行多线程处理?以下是问题:***.com/questions/17601698/… Django-Notification 可能是您正在寻找的。这和这个问题有什么关系? @karthikr 您必须将第一个 sn-p 中的输入更改为 type="submit"【参考方案3】:这个怎么样:
<a class="btn btn-primary" href="% url 'url-name'%">Button-Text</a>
该类包括主按钮的引导样式。
【讨论】:
【参考方案4】:您可以将输入放在这样的表单中:-
<script>
$(document).ready(function()
$(document).on('click','#send', function()
$('#hid').val(data)
document.forms["myForm"].submit();
)
)
</script>
<form id="myForm" action="/request_page url/" method="post">
<input type="hidden" id="hid" name="hid"/>
</form>
<div id="send">Send Data</div>
【讨论】:
【参考方案5】:例如,注销按钮可以这样写:
<button class="btn btn-primary" onclick="location.href=% url 'logout'%">Logout</button>
注销端点在哪里:
#urls.py:
url(r'^logout/$', auth_views.logout, 'next_page': '/', name='logout'),
【讨论】:
【参考方案6】:删除所有数据:
HTML 文件
class="btn btn-primary" href="% url 'delete_product'%">Delete
将上面的代码放在一个锚标记中。 (a 标签!)
url.py
path('delete_product', views.delete_product, name='delete_product')]
views.py
def delete_product(request):
if request.method == "GET":
dest = Racket.objects.all()
dest.delete()
return render(request, "admin_page.html")
【讨论】:
以上是关于Django:如何从模板调用视图函数?的主要内容,如果未能解决你的问题,请参考以下文章
我如何从 jQuery Datatables 调用 django 视图?
如何从我的 Django 模板中调用 Dajax / Dajaxice 函数