Django: Comment puis-je appeler une fonction view à partir du modèle?

j'ai une question sur la façon d'appeler une fonction de vue à partir d'un bouton HTML de modèle? Comme une fonction onclick? Voici le modèle:

<input id="submit" type="button" onclick="xxx" method="post" value="Click" />
<!-Et le views.py is:

def request_page(request):
    ...do something...
    return render_to_response("/directory.html", {})

je vous Remercie beaucoup.

21
demandé sur Robert 2013-07-11 20:44:54

5 réponses

une option est, vous pouvez envelopper le submit bouton form

quelque Chose comme ceci:

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

(supprimer le onclick et method)

si vous voulez charger une partie spécifique de la page, sans recharger la page - vous pouvez faire

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

et un submit écouteur

$(function(){
     $('form').on('submit', function(e){
         e.preventDefault();
         $.ajax({
             url: $(this).attr('action'),
             method: $(this).attr('method'),
             success: function(data){ $('#target').html(data) }
         });
     });
});
11
répondu karthikr 2013-07-11 16:50:44

en supposant que vous voulez obtenir une valeur à partir de l'entrée de l'utilisateur dans la zone de texte html chaque fois que l'utilisateur clique sur le bouton "clic", et ensuite appeler une fonction python (mypythonfonction) que vous avez écrite à l'intérieur mypythoncode.py. Notez que la classe" btn " est définie dans un fichier css.

à l'intérieur de 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>
import mypythoncode

def request_page(request):
  if(request.GET.get('mybtn')):
    mypythoncode.mypythonfunction( int(request.GET.get('mytextbox')) )
return render(request,'myApp/templateHTML.html')
71
répondu Mahshid Zeinaly 2016-06-21 09:20:31

Que Diriez-vous de ceci:

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

la classe inclut les styles de bootstrap pour le bouton primaire.

7
répondu mapadj 2016-09-03 17:37:48

Vous pouvez insérer l'entrée dans un formulaire comme celui-ci: -

<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>
4
répondu Nullify 2013-07-11 16:57:04

Par exemple, un bouton de déconnexion peut être écrit comme ceci:

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

Où déconnexion d'extrémité:

#urls.py:
url(r'^logout/$', auth_views.logout, {'next_page': '/'}, name='logout'),
2
répondu Lucian 2018-01-15 15:51:45