Django POST方法给出500内部服务器错误

时间:2016-11-18 17:32:15

标签: python django django-rest-framework django-csrf

我目前正在研究Django项目。当我使用CURL发送GET请求时,它工作正常,但是在POST请求的情况下,它给了我500个内部错误。我认为它与csrf令牌有关,我不知道如何处理它或csrf将如何解决我的错误。

我还在settings.py中设置了DEBUG = False和ALLOWED_HOSTS = [' *'],但我也遇到了同样的错误:

服务器错误(500 )

以下是我的一些代码:

urls.py

from django.conf.urls import patterns, url

urlpatterns = patterns(
    'project.views',
    url(r'^users/$', 'userList', name='userList'),
    url(r'^users/(?P<pk>[0-9]+)$', 'userDetail', name='userDetail'),
)

这是来自views的函数py

@api_view(['GET', 'POST'])

def userList(request):
    if request.method == 'GET':
        user = users.objects.all()
        serializer = UsersSerializer(user, many=True)
        return Response(serializer.data)

    elif request.method == 'POST':
        serializer = UsersSerializer(data=request.DATA)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        else:
            return Response(
            serializer.errors, status=status.HTTP_400_BAD_REQUEST)

这是我在终端中使用的命令:

curl -X POST http://127.0.0.1:8000/users/ -d&#39; {&#34;用户名&#34;:&#34; root&#34;,&#34;电子邮件&#34;:&#34; abc@gmail.com"}&#39; -H&#34; Content-Type:application / json&#34;

Django版本号:1.9

在POSTMAN中我收到错误:

{   &#34;用户名&#34;:[     &#34;此字段是必填字段。&#34;   ]   &#34;电子邮件&#34;:[     &#34;此字段是必填字段。&#34;   ] }

2 个答案:

答案 0 :(得分:0)

不应该是data=request.data(小写data)吗?

答案 1 :(得分:0)

实际上,数据不是像这样分配给帖子的吗?

STARTUPINFOA  si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
char *cmd = strdup("c:\\windows\\notepad.exe \"c:\\path\\filename.txt\"");
CreateProcessA(0, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
free(cmd);
CloseHandle(pi.hProcess);