Я создал представление rest-framework для создания объекта.Различные ответы в зависимости от инструмента запроса
К сожалению, я получаю разные ответы, если:
- Я использую интерфейс browsableAPI с необработанными данными: 201 СОЗДАНА
- Я использую Hurl.it (см параметров): 201 СОЗДАН
- Я использую завиток (
curl -d @sample.json -H "Content-Type: application/json" -u admin -i "https://vincentle.pythonanywhere.com/samples/api/create/"
): 302 НАЙДЕНО - Я использую OkHttp/Дооснащение в Android приложение: 302 НАЙДЕНО
C вы помогаете мне, по крайней мере, в предоставлении некоторых стратегий отладки?
просмотров:
class SampleCreateAPIView(ListCreateAPIView):
queryset = Sample.objects.all()
serializer_class = SampleSerializer
permission_classes = (permissions.IsAuthenticated,)
def perform_create(self, serializer):
room = serializer.validated_data['room']
building = room.area.floor.building
admins = building.customer_account.admin.all()
if self.request.user in admins:
super(SampleCreateAPIView, self).perform_create(serializer)
else:
raise PermissionDenied(detail=_('You are not in the administrators list for this room'))
сериализаторы:
class SampleSerializer(serializers.ModelSerializer):
room = serializers.PrimaryKeyRelatedField(many=False, queryset=Room.objects.all())
wifiaccesspoint_set = WifiAccessPointSerializer(many=True)
class Meta:
model = Sample
fields = ('room', 'wifiaccesspoint_set',)
def create(self, validated_data):
wap_data = validated_data.pop('wifiaccesspoint_set')
sample = Sample(room=validated_data['room'])
sample.save()
for wap in wap_data:
WifiAccessPoint.objects.create(sample=sample, **wap)
return sample
Edit 1 - Кажется локонов проблему Эта команда: curl -u admin -i "https://vincentle.pythonanywhere.com/fr/samples/api/create/" -H "Content-Type: application/json" -d @sample.json
работает нормально, и я получаю 201 СОЗДАНО ответ.
Но эта команда: curl -d @sample.json -H "Content-Type: application/json" -u admin -i "https://vincentle.pythonanywhere.com/samples/api/create/"
дает мне ответ 302 НАЙДЕН.
В чем разница между этими двумя командами?
Вы можете сравнить заголовок запроса curl и API для просмотра для стартеров. Вы уже используете '-i' в своем запросе curl, теперь все, что вам нужно сделать, это увидеть вкладку в сети параметров разработчика вашего браузера. Было бы лучше, если бы вы могли делиться заголовками. –
См. Править для префикса – bixente57
Можете ли вы поделиться выводом curl? Если ограничение по символу/пробелу является проблемой, вы можете использовать какое-либо онлайн-приложение, например [dpaste] (http://dpaste.de), чтобы опубликовать информацию о выходе curl? –