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.
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) }
});
});
});
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')
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.
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>
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'),