簡體   English   中英

使用Django1.10 + Nginx +主管+ Gunicorn獲取空的帖子請求

[英]getting empty post request with Django1.10 + Nginx + Supervisor + Gunicorn

我正在使用curl發出帶有curl的帖子請求,甚至比這個更簡單:

curl -u usr:pwd -H "Content-Type: multipart/form-data" -i --form "file=@/path/to/myfile/myfile.zip"  -X POST http://midominio.co/api/mypostrequest/

但我總是空着身體,這就是我得到的:

{
'session': <django.contrib.sessions.backends.db.SessionStore object at 0x7f118e502b90>, 
'_post': <QueryDict: {}>, 
'content_params': {'boundary': '------------------------axxxxxxxxx'}, 
'_post_parse_error': False, 
'_messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7f118e502d90>, 
'resolver_match': ResolverMatch(func=piston.resource.Resource, args=(), kwargs={}, url_name=None, app_names=[], namespaces=[]), 
'GET': <QueryDict: {}>, 
'_stream': <django.core.handlers.wsgi.LimitedStream object at 0x7f118e502b50>, 
'COOKIES': {}, 
'_files': <MultiValueDict: {}>, 
'_read_started': False, 
'META': {'HTTP_AUTHORIZATION': 'Basic Y2FpbjpjYWlu', 
'SERVER_SOFTWARE': 'gunicorn/19.7.1', 
'SCRIPT_NAME': u'', 
'REQUEST_METHOD': 'POST', 
'PATH_INFO': u'/api/mypostrequest/', 
'SERVER_PROTOCOL': 'HTTP/1.0', 
'QUERY_STRING': '', 
'CONTENT_LENGTH': '180', 
'HTTP_USER_AGENT': 'curl/7.51.0', 
'HTTP_CONNECTION': 'close', 
'SERVER_NAME': 'midominio.co', 
'REMOTE_ADDR': '', 
'wsgi.url_scheme': 'http', 
'SERVER_PORT': '80', 
'wsgi.input': <gunicorn.http.body.Body object at 0x7f118e5029d0>, 
'HTTP_HOST': 'midominio.co', 
'wsgi.multithread': False, 
'HTTP_ACCEPT': '*/*', 
'wsgi.version': (1, 0), 
'RAW_URI': '/api/mypostrequest/', 
'wsgi.run_once': False, 
'wsgi.errors': <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f118e502950>, 
'wsgi.multiprocess': True, 
'gunicorn.socket': <socket._socketobject object at 0x7f118e4f6de0>, 
'CONTENT_TYPE': 'multipart/form-data; boundary=------------------------axxxxxxxxx', 
'HTTP_X_FORWARDED_FOR': '186.00.00.000', 
'wsgi.file_wrapper': <class 'gunicorn.http.wsgi.FileWrapper'>}, 
'environ': {'HTTP_AUTHORIZATION': 'Basic Y2FpbjpjYWlu', 
'SERVER_SOFTWARE': 'gunicorn/19.7.1', 
'SCRIPT_NAME': u'', 
'REQUEST_METHOD': 'POST', 
'PATH_INFO': u'/api/mypostrequest/', 
'SERVER_PROTOCOL': 'HTTP/1.0', 
'QUERY_STRING': '', 
'CONTENT_LENGTH': '180', 
'HTTP_USER_AGENT': 'curl/7.51.0', 
'HTTP_CONNECTION': 'close', 
'SERVER_NAME': 'midominio.co', 
'REMOTE_ADDR': '', 
'wsgi.url_scheme': 'http', 
'SERVER_PORT': '80', 
'wsgi.input': <gunicorn.http.body.Body object at 0x7f118e5029d0>, 
'HTTP_HOST': 'midominio.co', 
'wsgi.multithread': False, 
'HTTP_ACCEPT': '*/*', 
'wsgi.version': (1, 0), 
'RAW_URI': '/api/mypostrequest/', 
'wsgi.run_once': False, 
'wsgi.errors': <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f118e502950>, 
'wsgi.multiprocess': True, 
'gunicorn.socket': <socket._socketobject object at 0x7f118e4f6de0>, 
'CONTENT_TYPE': 'multipart/form-data; boundary=------------------------axxxxxxxxx', 
'HTTP_X_FORWARDED_FOR': '186.00.00.000', 
'wsgi.file_wrapper': <class 'gunicorn.http.wsgi.FileWrapper'>}, 
'path_info': u'/api/mypostrequest/', 
'content_type': 'multipart/form-data; boundary=------------------------axxxxxxxxx', 
'path': u'/api/mypostrequest/', 
'data': <QueryDict: {}>, 
'method': 'POST', 
'user': <User: cain>

}

我使用的是默認的nginx配置,該部分的網絡版本也帶有“上傳按鈕”,並且一切正常,nginx或超級用戶的.log文件中沒有錯誤,django安裝也可以,有任何想法嗎? 謝謝

我嘗試將其作為普通請求是一個錯誤,這是WSGIRequest,這意味着需要以我解決的不同方式處理它,希望對其他人有所幫助:

    environ =  request.environ
    form = cgi.FieldStorage(fp=environ['wsgi.input'], environ=environ)
    f = form['file'].file

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM