【发布时间】:2021-06-09 18:24:03
【问题描述】:
我有一个以 Django 作为服务器端的 react-native 应用程序,在将图像(多个)上传到 Django 服务器时遇到了一些问题。
这是我的代码: 反应原生:
import DocumentPicker from 'react-native-document-picker';
let formData = new FormData();
formData.append('title', postTitle);
formData.append('description', postDescription);
formData.append('created_by', uuid);
formData.append('images', images);
fetch(url, {
method: 'POST',
body: JSON.stringify(formData),
headers: {
//Header
'Content-Type': 'multipart/form-data',
'Authorization': 'Token '+ token
},
})
...
姜戈:
class NewsFeedView(APIView):
"""
An API endpoint for user registration.
POST must contain 'username', 'email', 'first_name', 'last_name' and 'password' fields.
"""
permission_classes = (IsAuthenticated, )
authentication_classes = (TokenAuthentication, )
parser_classes = (MultiPartParser, FormParser)
def post(self, request):
# newsfeed_obj = NewsFeed(title=request.data['title'],
description=request.data['description'], is_active=True, created_by=user)
# newsfeed_obj_dict = newsfeed_obj.__dict__
print (request)
images_data = request.data.pop('images')
print (images_data)
...
错误消息表单服务器:
{detail: "Multipart form parse error - Invalid boundary in multipart: None"}
<rest_framework.request.Request: POST '/spnewsfeed/create/'>
Bad Request: /spnewsfeed/create/
当我将multipart/form-data; boundary=<calculated when request is sent> 与标题一起放入时,
得到以下错误:
<QueryDict: {}>
Internal Server Error: /spnewsfeed/create/
Traceback (most recent call last):
File "/home/user/.local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/home/user/.local/lib/python3.6/site-packages/django/core/handlers/base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/user/.local/lib/python3.6/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "/home/user/.local/lib/python3.6/site-packages/django/views/generic/base.py", line 70, in view
return self.dispatch(request, *args, **kwargs)
File "/home/user/.local/lib/python3.6/site-packages/rest_framework/views.py", line 509, in dispatch
response = self.handle_exception(exc)
File "/home/user/.local/lib/python3.6/site-packages/rest_framework/views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
File "/home/user/.local/lib/python3.6/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
raise exc
File "/home/user/.local/lib/python3.6/site-packages/rest_framework/views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
File "/home/user/Documents/react-native-works/schoolpathram/schoolpathram/spserver/spnewsfeed/views.py", line 43, in post
images_data = request.data.pop('images')
File "/home/user/.local/lib/python3.6/site-packages/django/http/request.py", line 552, in pop
self._assert_mutable()
File "/home/user/.local/lib/python3.6/site-packages/django/http/request.py", line 510, in _assert_mutable
raise AttributeError("This QueryDict instance is immutable")
AttributeError: This QueryDict instance is immutable
request.data 没有给出任何值。
有人可以帮忙吗? 提前感谢帮助。谢谢
【问题讨论】:
标签: react-native file-upload django-rest-framework