2013-07-11 41 views
21

テンプレートHTMLボタンからビュー関数を呼び出す方法について質問がありますか? onclick関数のように?ここ はテンプレートです:Django:テンプレートからビュー関数を呼び出すにはどうすればいいですか?

<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", {}) 

ありがとうございました。あなたが特定のをロードする場合

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

onclickmethodを削除)

答えて

10

1つのオプションは、あなたがこのようなform

何かでsubmitボタンをラップすることができ、ありますページの一部、ページの再読み込みなしで - 行うことができます

<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) } 
     }); 
    }); 
}); 
+0

おかげで、私はちょうどジャンプしない、view.pyでメソッドを呼び出したいですページ.. – Robert

+3

ええ..それは何を提出していることです。あなたの質問は不明なので、私は両方の答えを追加 – karthikr

+0

私はそこにDjangoでマルチスレッドを行うための方法があるのだろうか?ここに質問があります:http://stackoverflow.com/questions/17601698/can-django-do-multi-thread-works – Robert

3

にあなたは、このようなフォーム内の入力を置くことができます: -

<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

あなたはいつでもHTMLのテキストボックスにユーザーの入力から値を取得したいと仮定すると、ユーザーは 'クリック'ボタンをクリックし、mypythoncode.pyの中に書いたpython関数(mypythonfunction)を呼び出します。 「btn」クラスはCSSファイルで定義されていることに注意してください。 templateHTML.html内部

:view.py内部

<form action="#" method="get"> 
<input type="text" value="8" name="mytextbox" size="1"/> 
<input type="submit" class="btn" value="Click" name="mybtn"> 
</form> 

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

クラスは、主ボタンのブートストラップスタイルを含めている。このことについてどのように

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

これは非常に良い回答です - それ以上の票は驚いています...あなた自身のプロジェクトでこれを使用しましたか? – nicorellius

+1

私はそれが役に立ちましたのでうれしいです。はい、Githubにアップロードしたプロジェクトがありました。 https://github.com/MahshidZ/ArchivIT –

+1

GETとHEADのリクエストは安全であるべきです。 https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html – Eloims

0
例えば、ログアウトボタンについては

は次のように書くことができます。

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

どこログアウトエンドポイント:

#urls.py: 
url(r'^logout/$', auth_views.logout, {'next_page': '/'}, name='logout'), 
関連する問題