Путаница с поршневыми вилками Django

#django #json #rest #post #django-piston

#django #json #остальное #Публикация #django-поршень

Вопрос:

Я заметил, что на GitHub есть около 30 форков Django Piston:

https://github.com/search ?q=django-поршеньamp;тип=Всеamp;repo=amp;langOverride=amp;start_value=1

Моя проблема с этой платформой заключается в том, что версии 0.2.2 и 0.2.1, похоже, не заполняют request.data поле надлежащим образом, когда я отправляю данные через POST application/json . Я почти уверен, что проблема существует, я потратил много времени на ее тестирование. Также я видел несколько заявок с жалобами на ту же проблему (если я правильно понимаю жалобы).

Мой вопрос: ко всем пользователям Django Piston — какие версии вы используете и считаете наиболее стабильными. request.data Поле работает правильно для вас.

Редактировать:

Вау, на самом деле в BitBucket ~ 140 форков… https://bitbucket.org/jespern/django-piston/descendants

РЕДАКТИРОВАТЬ (2):

На самом деле, после того, как я пробовал Piston довольно долгое время, я должен сказать, что его кодовая база довольно беспорядочная. Могло бы быть и более запутанным, но это не совсем понятно. Более того, в нем есть несколько ужасных идей, большинство из которых связаны с глобальными переменными. После отслеживания нескольких ошибок, которые, как оказалось, коренятся в некоторых причудливых дизайнерских решениях в Piston, я, наконец, повернулся к нему спиной и теперь перешел к TastyPie. С тех пор проблем не было.

Комментарии:

1. да .. это беспорядок .. но 0.2.2 отлично работает для меня (включая запрос. данные с данными POST и JSON)

2. @Henrik Но отправляете ли вы данные в формате JSON?

3. ага .. например gist.github.com/935254

4. Могу ли я также просмотреть код на стороне клиента? Или это просто веб-сервис? Возможно, проблема заключается в jQuery. Я проведу некоторую двойную проверку.

Ответ №1:

Ну, наконец-то отследили это. Необходимо научиться просматривать исходные тексты раньше, поскольку проблема оказалась не такой серьезной. Ну, jQuery всегда добавляет «; charset=utf-8» в конец запроса. С другой стороны, Piston предполагает, что тип MIME точно соответствует зарегистрированному имени. В другом случае это вызывает BAD_REQUEST. Одно незначительное исправление внутри utils.py, и все снова работает, как ожидалось.

Комментарии:

1. Ну, проблема в том, что с тех пор я переключился на другую библиотеку (tastypie), но, насколько я помню, это была строка, которая регистрирует анализатор для указанного типа контента. Я изменил тип контента с «json» на «json; charser-utf-8», и это отметилось. Если у вас возникли проблемы с поиском, я мог бы покопаться в своих прошлых коммитах.

2. Ах, это просто. Я предположил, что вы что-то делаете с BAD_REQUEST. Спасибо!