Django:如何从模板中调用视图函数?

Rob*_*ert 23 django templates view

我有一个关于如何从模板HTML按钮调用视图函数的问题?像一个onclick功能?这是模板:

<input id="submit" type="button" onclick="xxx" method="post" value="Click" />
Run Code Online (Sandbox Code Playgroud)

而views.py是:

def request_page(request):
    ...do something...
    return render_to_response("/directory.html", {})
Run Code Online (Sandbox Code Playgroud)

非常感谢你.

Mah*_*aly 88

假设您想要在用户单击"Click"按钮时从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>
Run Code Online (Sandbox Code Playgroud)

在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')
Run Code Online (Sandbox Code Playgroud)

  • 这是一个非常好的答案 - 不再感到惊讶......你是否在自己的项目中使用过这个? (2认同)
  • 输入后{%csrf_token%}怎么样? (2认同)

kar*_*ikr 12

一个选项是,你可以submit用一个包裹按钮form

像这样的东西:

<form action="{% url path.to.request_page %}" method="POST">
    <input id="submit" type="button" value="Click" />
</form>
Run Code Online (Sandbox Code Playgroud)

(删除onclickmethod)

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

<input id="submit" type="button" value="Click" data_url/>
Run Code Online (Sandbox Code Playgroud)

并在submit听众身上

$(function(){
     $('form').on('submit', function(e){
         e.preventDefault();
         $.ajax({
             url: $(this).attr('action'),
             method: $(this).attr('method'),
             success: function(data){ $('#target').html(data) }
         });
     });
});
Run Code Online (Sandbox Code Playgroud)

  • 是的..这就是ajax提交的内容.你的问题不清楚,所以我加了两个答案 (3认同)

小智 9

这个怎么样:

<a class="btn btn-primary" href="{% url 'url-name'%}">Button-Text</a>
Run Code Online (Sandbox Code Playgroud)

该类包括主按钮的引导样式.


Nul*_*ify 5

您可以将输入放在这样的表单中:-

<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>
Run Code Online (Sandbox Code Playgroud)


小智 5

删除所有数据:

HTML文件

  class="btn btn-primary" href="{% url 'delete_product'%}">Delete
Run Code Online (Sandbox Code Playgroud)

将以上代码放入锚标记中。(a 标签!)

网址.py

path('delete_product', views.delete_product, name='delete_product')]
Run Code Online (Sandbox Code Playgroud)

视图.py

  class="btn btn-primary" href="{% url 'delete_product'%}">Delete
Run Code Online (Sandbox Code Playgroud)