2016-09-30 8 views
-1

Есть ли общий способ загрузки загруженных файлов на Python так же, как $ _FILES в PHP?Есть ли общий способ загрузки загруженного файла на несколько фреймворков Python?

В Django находится request.FILES['fieldid'], в пирамиде request.POST['fieldid'], а в колбе request.files['fieldid']. И все это возвращает другой тип объекта. Однако есть ли общий способ получить это во всех трех рамках?

Спасибо!

+1

Зачем вам это нужно? В основе WSGI-среды лежат необработанные данные, которые «эквивалентны» сырому PHP в том смысле, что все, что использует WSGI, использует свою среду. – davidism

+0

@davidism Я работаю над библиотекой, в которой будет храниться загруженный файл, и я хочу сделать его общим для всех фреймворков Python. Как я могу получить среду из WSGI во всех средах? – st3fan

+0

Способ, которым обычно обрабатывается, заключается в том, что вы пишете свою библиотеку, а затем записываете расширения для поддерживаемых вами фреймворков. В этом случае вы, скорее всего, не захотите использовать связующее ПО WSGI, так как вам придется самостоятельно анализировать мультипартийное тело, и вам нужно будет не удалять данные, чтобы рамки могли по-прежнему читать их сами по себе. – davidism

ответ

0

Я думаю, что ответ - нет! Поскольку, например, в django, класс HttpRequest, который имеет атрибут FILES, является словарем и заполняется другими частями фреймворка. Таким образом, этот объект создается и создается django и только унаследован от класса объектов, поэтому это просто словарь.

class HttpRequest(object): 
    """A basic HTTP request.""" 

    # The encoding used in GET/POST dicts. None means use default setting. 
    _encoding = None 
    _upload_handlers = [] 

    def __init__(self): 
     # WARNING: The `WSGIRequest` subclass doesn't call `super`. 
     # Any variable assignment made here should also happen in 
     # `WSGIRequest.__init__()`. 

     self.GET = QueryDict(mutable=True) 
     self.POST = QueryDict(mutable=True) 
     self.COOKIES = {} 
     self.META = {} 
     self.FILES = MultiValueDict() 

     self.path = '' 
     self.path_info = '' 
     self.method = None 
     self.resolver_match = None 
     self._post_parse_error = False 
     self.content_type = None 
     self.content_params = None 

Вы можете увидеть полный исходный код здесь:
https://docs.djangoproject.com/en/1.10/_modules/django/http/request/#HttpRequest

 Смежные вопросы

  • Нет связанных вопросов^_^