2013-07-11 28 views

Trả lời

10

Một lựa chọn là, bạn có thể quấn vào nút submit với một cái gì đó form

như thế này:

<form action="{% url path.to.request_page %}" method="POST"> 
    <input id="submit" type="button" value="Click" /> 
</form> 

(loại bỏ các onclickmethod)

Nếu bạn muốn tải một cụ thể một phần của trang mà không cần tải lại trang - bạn có thể làm

<input id="submit" type="button" value="Click" data_url/> 

và trên một người biết lắng nghe submit

$(function(){ 
    $('form').on('submit', function(e){ 
     e.preventDefault(); 
     $.ajax({ 
      url: $(this).attr('action'), 
      method: $(this).attr('method'), 
      success: function(data){ $('#target').html(data) } 
     }); 
    }); 
}); 
+0

Cảm ơn, nhưng tôi muốn gọi phương thức trong view.py, không chỉ nhảy trang .. – Robert

+3

Yeah .. thats ajax submit đang làm. câu hỏi của bạn là không rõ ràng, vì vậy tôi thêm cả hai câu trả lời – karthikr

+0

Tôi tự hỏi là có cách nào để làm multithreadings trong Django? Dưới đây là các câu hỏi: http://stackoverflow.com/questions/17601698/can-django-do-multi-thread-works – Robert

3

bạn có thể đặt các đầu vào bên trong một hình thức như thế này: -

<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> 
54

Giả sử rằng bạn muốn nhận được một giá trị từ người dùng nhập vào trong html textbox bất cứ khi nào người dùng nhấp vào nút 'Nhấp vào' và sau đó gọi hàm python (mypythonfunction) mà bạn đã viết bên trong mypythoncode.py. Lưu ý rằng lớp "btn" được định nghĩa trong một tệp css.

bên 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> 

bên 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') 
+2

Đây là một câu trả lời rất hay - ngạc nhiên không có phiếu bầu ... Bạn đã sử dụng điều này trong các dự án của riêng bạn? – nicorellius

+1

Tôi rất vui vì nó hữu ích.Có Tôi có một dự án được tải lên tại Github nơi tôi đã sử dụng nó. https://github.com/MahshidZ/ArchivIT –

+1

Cẩn trọng, yêu cầu GET và HEAD phải an toàn/không cần thiết. https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html – Eloims

6

Làm thế nào về điều này:

<a class="btn btn-primary" href="{% url 'url-name'%}">Button-Text</a> 

Các lớp được bao gồm phong cách bootstrap cho nút chính.

0

Đối với ví dụ, một nút logout có thể được viết như thế này:

<button class="btn btn-primary" onclick="location.href={% url 'logout'%}">Logout</button> 

đâu logout endpoint:

#urls.py: 
url(r'^logout/$', auth_views.logout, {'next_page': '/'}, name='logout'), 
Các vấn đề liên quan