33 votes

Erreur de l'URL POST de Django

J'essaie de créer un Api REST dans Django en produisant du Json. J'ai des problèmes si je fais une requête POST en utilisant curl dans le terminal. L'erreur que j'obtiens est

Vous avez appelé cette URL via POST, mais l'URL ne se termine pas par une barre oblique et vous avez défini APPEND_SLASH. Django ne peut pas rediriger vers l'URL avec barre oblique avec barre oblique tout en conservant les données POST. Modifiez votre formulaire pour qu'il pointe vers 127.0.0.1:8000/add/ (notez la barre oblique de fin), ou définissez APPEND_SLASH=False dans vos paramètres Django.

Mon url.py est

    from django.conf.urls.defaults import patterns, include, url
import search

# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',

    url(r'^query/$', 'search.views.query'),
    url(r'^add/$','search.views.add'),
)

et mes opinions sont

# Create your views here.
from django.http import HttpResponse
from django.template import Context,loader
import memcache
import json

def query(request):
    data=['a','b']

    mc=memcache.Client(['127.0.0.1:11221'],debug=0)
    mc.set("d",data);

    val=mc.get("d")

    return HttpResponse("MEMCACHE: %s<br/>ORIGINAL: %s" % (json.dumps(val),json.dumps(data)) )

def add(request):
    #s=""
    #for data in request.POST:
    #   s="%s,%s" % (s,data)
    s=request.POST['b']
    return HttpResponse("%s" % s)

Je sais que cela ne donne pas Json mais j'ai le problème mentionné ci-dessus lorsque je fais une requête POST dans le terminal.

curl http://127.0.0.1:8000/add/ -d b=2 >> output.html

Je suis cependant novice en matière de django.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X