Django: Come posso chiamare una funzione per la vista da modello?

Ho una domanda su come chiamare una funzione per la vista da un modello HTML pulsante? Come una funzione di onclick?
Ecco il modello:

<input id="submit" type="button" onclick="xxx" method="post" value="Click" />

E il views.py è:

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

Vi ringrazio molto.

InformationsquelleAutor Robert | 2013-07-11

 

5 Replies
  1. 12

    Una opzione, è possibile avvolgere il submit pulsante con un form

    Qualcosa di simile a questo:

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

    (rimuovere il onclick e method)

    Se si desidera caricare una parte specifica della pagina, senza ricaricare la pagina – è possibile fare

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

    e su un submit ascoltatore

    $(function(){
         $('form').on('submit', function(e){
             e.preventDefault();
             $.ajax({
                 url: $(this).attr('action'),
                 method: $(this).attr('method'),
                 success: function(data){ $('#target').html(data) }
             });
         });
    });
    • Grazie, ma ho voglia di chiamare il metodo in view.py non solo salto pagina..
    • Sì.. questo è quello che l’ajax presentare sta facendo. la tua domanda è poco chiara, così ho aggiunto sia per le risposte
    • Mi chiedo c’è un modo per fare multithreadings in Django? Ecco le domande: stackoverflow.com/questions/17601698/…
    • Django-Notifica potrebbe essere quello che stai cercando. Che cosa ha a che fare con questa domanda comunque ?
    • dovrete cambiare il vostro ingresso nel primo snippet type=”submit”
  2. 85

    Supponendo che si desidera ottenere un valore dall’input dell’utente in testo html ogni volta che l’utente fa clic del Clic del pulsante, e quindi chiamare una funzione python (mypythonfunction) che è stato scritto all’interno mypythoncode.py. Nota che “btn” classe è definita in un file css.

    all’interno 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>

    all’interno 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')
    • Questa è una buona risposta – sorpreso non più voti… hai utilizzato questo nei vostri progetti?
    • Sono contento che sia stato utile. Sì, ho un progetto caricato su Github in cui l’ho usato. github.com/MahshidZ/ArchivIT
    • Prendersi cura, AVERE TESTA e richiesta deve essere sicuro/idenpotent. w3.org/Protocols/rfc2616/rfc2616-sec9.html
    • Che cosa circa {% funzioni csrf_token %} dopo ingresso ?
  3. 9

    Come questo:

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

    La classe è compreso il bootstrap stili per primaria pulsante.

  4. 4

    è possibile mettere l’ingresso all’interno di un modulo come questo:-

    <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>
  5. 3

    Per esempio, un pulsante logout può essere scritto come:

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

    Dove logout endpoint:

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

Lascia un commento