Comment écrire un Django vue pour une requête POST

J'ai écrit un tout petit exemple: un junit bouton qui envoie une requête POST avec une paire de valeurs:

<!doctype html>

<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>jQuery UI Button - Default functionality</title>
    <script src="{{STATIC_URL}}js/jquery-1.9.1.js"></script>
    <script src="{{STATIC_URL}}js/jquery-ui-1.10.3.custom.js"></script>
    <link rel="stylesheet" href="{{STATIC_URL}}css/jquery-ui-1.10.3.custom.css">

  <script>
  $(function() {
    $( "button" )
      .button()
      .click(function( event ) {
        var postdata = {
            'value1': 7,
            'value2': 5
        };
        $.post('', postdata); // POST request to the same view I am now
        window.alert("Hello world!"); // To know it is working
      });
  });
  </script>
</head>
<body>

<button>Submit</button>


</body>
</html>

Ainsi, la vue est rendue lorsqu'une demande est envoyée à localhost:8000/bouton/, et lorsque le bouton est enfoncé une requête POST est également envoyé à localhost:8000/bouton/.

urls.py

from django.conf.urls import patterns, url

urlpatterns = patterns('',
    url(r'^button/$', 'helloworld.views.buttonExample'),
    )

views.py

def buttonExample(request):
    print 'RECEIVED REQUEST: ' + request.method
    if request.method == 'POST':
        print 'Hello'
    else: #GET
        return render(request, 'buttonExample.html')

Lorsque la demande est faite, la vue s'affiche correctement et je peux aussi lire à Django console les lignes:

RECEIVED REQUEST: GET <---- This line is because of my print
[28/May/2013 05:20:30] "GET /button/HTTP/1.1" 200 140898
[28/May/2013 05:20:30] "GET /static/js/jquery-1.9.1.js HTTP/1.1" 304 0
[28/May/2013 05:20:30] "GET /static/js/jquery-ui-1.10.3.custom.js HTTP/1.1" 304 0
[28/May/2013 05:20:30] "GET /static/css/jquery-ui-1.10.3.custom.css HTTP/1.1" 304 0
...

Et lorsque le bouton est enfoncé, je peux voir:

[28/May/2013 05:20:34] "POST /register/HTTP/1.1" 403 142238

Mais "REÇU de la DEMANDE: POST" n'est jamais imprimé. Il n'est ni "Bonjour". Il semble que l'urls.py n'est pas de servir la vue quand un POST est arrivé, parce que dans Firebug je vois que le POST statut 403 FORBIDDEN.

C'est probablement une stupide erreur de débutant, mais je ne sais pas ce qui me manque. J'ai lu le django chapitre de livre sur les avancées URLConf et Vues, et il semble que ça devrait fonctionner, il suffit de cocher la demande.méthode de la valeur.

AJOUTER un jeton csrf à ur modèle..

OriginalL'auteur Roman Rdgz | 2013-05-28