小编典典

Django POST URL错误

python

我正在尝试通过输出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的新手。


阅读 140

收藏
2020-12-20

共1个答案

小编典典

首先,请确保将请求发送给http://127.0.0.1/add/not http://127.0.0.1/add

其次,您可能还想通过添加@csrf_exempt装饰器来使视图免于进行csrf处理-因为您没有从cURL发送适当的令牌。

2020-12-20