【发布时间】:2017-04-02 15:32:37
【问题描述】:
我目前正在做一个 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'),
)
这是来自视图的函数,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 '{"username":"root", "email":"abc@gmail.com"}' -H "Content-Type: application/json"
Django 版本号:1.9
在 POSTMAN 中,我收到以下错误:
{ “用户名”: [ “这是必填栏。” ], “电子邮件”: [ “这是必填栏。” ] }
【问题讨论】:
-
您有权访问服务器的日志吗?回溯说明了什么?
-
如果您将 DEBUG 设置为 True,您将看到完整的错误。它说什么?
-
当我使用 POSTMAN 时,它给了我一个错误:{ "detail": "Unsupported media type \"text/plain;charset=UTF-8\" in request." }
-
你能添加你的UsersSerializer类的定义吗?
标签: python django django-rest-framework django-csrf