Вы пытаетесь загрузить файл с помощью метода HTTP POST
, я не думаю, что это хороший способ. Попробуйте HTTP GET
для загрузки. Если вы хотите предоставить дополнительные аргументы (полезная нагрузка в методе POST), вы можете сделать это, используя Query Parameter
как /api/end/point/?param=value1¶m2=value2
. Итак, попробуйте следующий фрагмент,
@api_view(['GET'])
def download_file(request):
if request.method == 'GET':
filename = 'file.xlsx'
file_full_path = "src/{0}".format(filename)
with open(file_full_path, 'rb') as f:
file = f.read()
response = HttpResponse(file, content_type="application/xls")
response['Content-Disposition'] = "attachment; filename={0}".format(filename)
response['Content-Length'] = os.path.getsize(file_full_path)
return response
return Response(status=status.HTTP_400_BAD_REQUEST)
Ваш PickListViewModel
должен предоставить свойство коллекции, элементы которого имеют тип PickLineViewModel
(, а не PickLine
).
Требуется ли вам ObservableCollection<PickLineViewModel>
, зависит от того, где могут произойти изменения - в сервисе / модели, которые изначально создали PickLine
, или в GUI, или в обоих. В любом случае вы должны убедиться, что изменения распространяются с одной стороны (коллекция моделей представлений) на другую (коллекция моделей). Google wrapping observable collection
как стартер (подсказка: избегайте двусторонней синхронизации, если это возможно). Эти сообщения в блоге старые, но все еще актуальны и хорошо читаются. Тривиальная упаковка описана в , этот ответ .