我正在尝试通过输出Json在Django中创建REST Api。如果我在终端中使用curl发出POST请求,则会遇到问题。我得到的错误是
您是通过POST调用此网址的,但该网址的结尾不是斜线,而是已设置APPEND_SLASH。Django在维护POST数据时无法重定向到斜杠URL。将您的表单更改为指向127.0.0.1:8000/add/(请注意斜杠),或在Django设置中设置APPEND_SLASH = False。
我的url.py是
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'), )
我的看法是
# 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)
我知道它没有给Json,但是当我在终端中发出POST请求时遇到了上面提到的问题
curl http://127.0.0.1:8000/add/ -d b=2 >> output.html
我是django的新手。
首先,请确保将请求发送给http://127.0.0.1/add/not http://127.0.0.1/add。
http://127.0.0.1/add/
http://127.0.0.1/add
其次,您可能还想通过添加@csrf_exempt装饰器来使视图免于进行csrf处理-因为您没有从cURL发送适当的令牌。
@csrf_exempt