#python #django #django-rest-framework #django-views
#питон #джанго #django-rest-фреймворк #джанго-просмотры
Вопрос:
Я новичок в среде Django rest, я работаю над небольшим проектом, и я сталкиваюсь с проблемой с сериализаторами, что мне нужно, это один URL-запрос со списком всех названий школ и другой URL-запрос, содержащий всю информацию о школе(название, город, улица, учащийся). Проблема в том, что в обоих URL-адресах я получаю одну и ту же информацию (имя, город, улица, студент). Кто-нибудь может мне с этим помочь?
serializers.py
class SchoolSerializer(serializers.Serializer): is_existing_student = = serializers.BooleanField() student = StudentSerializer(many=True) class Meta: model = School fields = ['is_existing_student', 'name', 'city', 'street', 'student'] class SchoolNameSerializer(serializers.ModelSerializer): class Meta: model = School fields = ['name']
views.py
class SchoolViewSet(mixins.CreateModelMixin, RetrieveModelMixin, ListModelMixin, GenericViewSet): serializer_class = SchoolSerializer queryset = School.objects.all() class SchoolNameViewSet(mixins.CreateModelMixin, RetrieveModelMixin, ListModelMixin, GenericViewSet): serializer_class = SchoolNameSerializer queryset = School.objects.all()
urls.py
router.register(r'schoolname', SchoolNameViewSet) router.register(r'school', SchoolViewSet)
Комментарии:
1. Этот код выглядит правильно. Можете ли вы подтвердить, что вы нажимаете
schoolname
URL-адрес с помощью своего клиента / браузера?2. @schillingt — «имя школы»: » 127.0.0.1:8000/api/школа «, «школа»: » 127.0.0.1:8000/api/школа » после api оба URL-адреса попадают в школу
3. Откуда это
{"schoolname": "127.0.0.1:8000/api/school", "school": "127.0.0.1:8000/api/school"}
берется? Похоже, в этом и есть проблема.4. Я не уверен, откуда вы получаете эту информацию и что это значит. Если вы установите django-расширения, вы можете использовать
python manage.py show_urls
, и он будет генерировать все различные URL-адреса, которые вы настроили. Оттуда вы можете увидеть URL-адрес, который вы должны использовать для названия школы.