Django URL de message d'erreur
Je suis en train de faire une Api REST dans Django par la sortie Json. Je vais avoir des problèmes si je fais une requête POST à l'aide de curl dans le terminal. L'erreur que j'obtiens est
Vous avez appelé cette URL par la POSTE, mais l'URL ne se terminent pas par une barre oblique et d'
vous avez APPEND_SLASH ensemble. Django ne pouvez pas rediriger vers la barre d'URL
tout en conservant les données POST. Changer le mode de point de
127.0.0.1:8000/ajouter/(notez la barre oblique), ou un ensemble APPEND_SLASH=False dans votre Django paramètres.
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 de mon point de vue
# 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 sa ne donnant pas Json, mais je vais avoir 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 nouveau sur django.
OriginalL'auteur Zabi | 2012-03-16
Vous devez vous connecter pour publier un commentaire.
D'abord, assurez-vous que vous envoyer la demande à
http://127.0.0.1/add/
pashttp://127.0.0.1/add
.Deuxièmement, vous pouvez également exonérés de la vue depuis csrf traitement par l'ajout de la
@csrf_exempt
décorateur - puisque vous n'êtes pas à l'envoi de la marque appropriée à partir de cURL.OriginalL'auteur Burhan Khalid
URL cohérence, Django a un paramètre appelé
APPEND_SLASH
, c'est toujours lui ajoute un slash à la fin de l'URL si elle n'était pas envoyés de cette façon pour commencer. Cela garantit que/my/awesome/url/
est toujours servi à partir de cette URL au lieu de deux/my/awesome/url
et/my/awesome/url/
.Cependant, Django fait par la redirection automatiquement la version sans le slash à la fin de l'un avec la barre oblique à la fin. Les redirections ne portent pas de l'état de la demande avec, donc quand cela arrive, votre message de données est supprimée.
Tout ce que vous devez faire est de vous assurer que lorsque vous envoyez votre message, vous l'envoyez à la version avec la barre oblique à la fin.
OriginalL'auteur Chris Pratt