Я создал небольшое приложение-приложение &, определяющее некоторую конечную точку, как и все задачи, Due Task, Completed Task.django rest API route, показывающий ту же самую ссылку api для всей конечной точки
Вот мой url.py
#Define API Routes
router = routers.DefaultRouter()
#router = routers.SimpleRouter()
router.register(r'task', views.TaskViewSet)
router.register(r'due_task', views.DueTaskViewSet)
router.register(r'completed_task', views.CompletedTaskViewSet)
urlpatterns = [
# Examples:
# url(r'^$', 'TaskAPI.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^',include(router.urls)),
url(r'^admin/', include(admin.site.urls)),
]
Serializers.py
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = ('id','task_name','task_desc','completed','date_created')
View.py
class TaskViewSet(viewsets.ModelViewSet):
queryset = Task.objects.all().order_by('-date_created')
serializer_class = TaskSerializer
class DueTaskViewSet(viewsets.ModelViewSet):
queryset = Task.objects.all().order_by('-date_created').filter(completed=False)
serializer_class = TaskSerializer
class CompletedTaskViewSet(viewsets.ModelViewSet):
queryset = Task.objects.all().order_by('-date_created').filter(completed=True)
serializer_class = TaskSerializer
model.py
class Task(models.Model):
task_name = models.CharField(max_length=20)
task_desc = models.TextField(max_length=200)
completed = models.BooleanField(default=False)
date_created = models.DateTimeField(auto_now=True)
при запуске сервера & hit 127.0.0.1:8080 Окно маршрута API откроется со всей конечной точкой, указывающей на ту же ссылку.
пожалуйста, предложить то, что происходит здесь не так. Спасибо
Было бы полезно просмотреть код сериализатора. Я собираюсь предположить, что ваши 'task',' due_task' и 'finished_task' являются отношениями. Если это так, то DRF использует «HyperlinkedRelatedField» по умолчанию. – themanatuf
@ themanatuf: я обновил свой код. пожалуйста, изучите его. спасибо –
Хммм ... Я не уверен на 100%, как DRF работает за кулисами, но я предполагаю, что вы определили три вида с одним и тем же сериализатором, DRF использует последний. Возможно, попробуйте фильтровать один вид, а не три: http://www.django-rest-framework.org/api-guide/filtering/ – themanatuf