2016-11-18 10 views
0

現在私はDjangoプロジェクトに取り組んでいます。 CURLを使用してGETリクエストを送信しているときは正常に動作していますが、POSTリクエストの場合は500の内部エラーが発生しています。私はそれがcsrfトークンと関係があり、それをどうすればいいのか、あるいはcsrfが私のエラーをどのように解決するのか分かりません。DjangoのPOSTメソッドで500の内部サーバーエラーが発生しました

私も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) 

これは私がターミナルで使用していますコマンドです:

カール-X POST http://127.0.0.1:8000/users/ -d '{ "ユーザ名": "ルート"、 "電子メール": "[email protected]"}' -H "コンテンツタイプ:アプリケーション/ JSON":として1.9

がPOSTMANでは、私はエラーを取得しています:

{ "ユーザー名":

Djangoのバージョン番号[ "このフィールドは必須です。" ]、 "email":[ "このフィールドは必須です。" ] }

+0

サーバーのログにアクセスできますか?トレースバックは何を言いますか? –

+0

DEBUGをTrueに設定すると、完全なエラーが表示されます。それは何と言いますか? –

+0

私はPOSTMANを使用したときにエラーが発生しました: { "詳細": "サポートされていないメディアタイプ\" text/plain; charset = UTF-8 \ "をリクエストしました。 } – neerav94

答えて

0

data=request.data(小文字のdata)であってはなりませんか?

+0

Djangoのビュー機能では、ポストデータは通常 'request.POST'にあります。 –

+0

いいえ、うまくいきません。 私はdata = request.dataとrequest.postの両方を試しましたが、どちらも動作していないようです。 – neerav94

0

実際には、このような投稿にデータを割り当てる必要はありませんか?

serializer = UsersSerializer(data=request.POST) 
+0

私は頑張ったが運がなかった。 – neerav94

関連する問題