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>

(去掉onclickmethod

如果您想加载页面的特定部分,而不需要重新加载页面 - 您可以这样做

<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:如何从模板调用视图函数?的主要内容,如果未能解决你的问题,请参考以下文章

Django:如何从模板中识别调用视图?

我如何从 jQuery Datatables 调用 django 视图?

如何从我的 Django 模板中调用 Dajax / Dajaxice 函数

Django - 从模板内部调用带有表单的视图

如何在返回的 AJAX 调用上使用 django 模板标签?

如何从 Django 中的表单调用 Python 函数?