web-dev-qa-db-fra.com

Django: Comment puis-je appeler une fonction d'affichage à partir d'un modèle?

J'ai une question sur la façon d'appeler une fonction d'affichage à 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 est:

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

Merci beaucoup.

23
Robert

Une option est, vous pouvez envelopper le bouton submit avec un form

Quelque chose comme ça:

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

(supprimez les onclick et method)

Si vous souhaitez charger une partie spécifique de la page, sans rechargement de page - vous pouvez le faire

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

et sur un écouteur submit

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

En supposant que vous souhaitez obtenir une valeur de l'entrée utilisateur dans la zone de texte html chaque fois que l'utilisateur clique sur le bouton `` Cliquer '', puis appelez une fonction python (fonction mypython) que vous avez écrite dans mypythoncode.py. Notez que la classe "btn" est définie dans un fichier css.

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

à l'intérieur de 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')
85
Mahshid Zeinaly

Que dis-tu de ça:

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

La classe comprend bootstrap styles pour le bouton principal.

9
mapadj

vous pouvez mettre 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
Nullify

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ù le point de terminaison de la déconnexion:

#urls.py:
url(r'^logout/$', auth_views.logout, {'next_page': '/'}, name='logout'),
3
Lucian