Seite 1 von 1
Django - jquery - Post Anfrage
Verfasst: Dienstag 29. März 2011, 15:29
von nvidia
Hallo,
bei mir klappt die Postanfrage einfach nicht. Die Get-anfrage geht. Warum ist das so?
Code: Alles auswählen
def login(request):
return HttpResponse("{0}".format(request.method))
Code: Alles auswählen
urlpatterns = patterns('dubx.views',
(r'^$', 'index'),
(r'^login/$', 'login'),
)
Code: Alles auswählen
<script type="text/javascript">
$(function() {
$.post("login", {
uname: "Der Apfel",
ufood: "Der Apfel"
},
function(data) {
alert(data);
}
);
});
$(function() {
$.get("login", function(data) {
alert(data);
});
});
</script>
Re: Django - jquery - Post Anfrage
Verfasst: Dienstag 29. März 2011, 15:59
von frabron
Ohne wirklich Ahnung von Django zu haben: Zumindest bei Flask und Bottle muss man Post auf der Route explizit erlauben, das ist vielleicht bei Django ebenso?!
Re: Django - jquery - Post Anfrage
Verfasst: Dienstag 29. März 2011, 16:50
von nvidia
hm das nicht, aber ich les hier grat, dass man einen CRSF-Token für Postanfragen braucht hm
Re: Django - jquery - Post Anfrage
Verfasst: Dienstag 29. März 2011, 17:28
von nvidia
Also ich hab hier nochma ein überarbeitetes Beispiel, aber das mit dem Token funktioniert irgentwie nicht, was fehlt?
Code: Alles auswählen
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.contrib.auth import authenticate, login
from django.utils import simplejson
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_protect
@csrf_protect
def index(request):
if request.is_ajax():
return HttpResponse("{0}".format(request.method))
if not request.user.is_authenticated():
return render_to_response('login.html', None, context_instance = RequestContext(request))
Code: Alles auswählen
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.csrf.CsrfResponseMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
Code: Alles auswählen
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('.login_form').submit(function(e){
e.preventDefault();
var username = $(".name").attr('value');
var password = $(".pass").attr('value');
$.ajax({
type: "POST",
timeout: 5000,
data: {username: username, password: password},
url: "login",
success: function(result) {
alert(result);
}
})
});
});
</script>
Code: Alles auswählen
<form class="login_form" action="" method="post">
{% csrf_token %}
<ul class="login_wrap">
<li><span class="legend">Login:</span></li>
...
Re: Django - jquery - Post Anfrage
Verfasst: Freitag 1. April 2011, 21:29
von apollo13
Du solltest die Django Docs lesen, speziell das Kapitel CSRF und Aajx