В настоящее время я работаю над своим первым Django REST Api, и у меня есть вопрос о маршрутизации.
У меня есть JSON, и краткая форма выглядит следующим образом:
{
"name": "Summer Festival",
"date": "2020-01-05",
"deadline": "2020-01-01",
"address": "Fantasy Road 50",
"postcode": 12346,
"location": "New York",
(...)
}
Я использую этот ViewSet:
class EventViewSet(viewsets.ModelViewSet):
queryset = Event.objects.all()
serializer_class = EventSerializer
и этот сериализатор:
class EventSerializer(serializers.ModelSerializer):
class Meta:
model = Event
fields = "__all__"
Мои urls.py:
router = routers.DefaultRouter()
router.register("events", views.EventViewSet)
urlpatterns = [
path('', include(router.urls)),
path(
'events/location=<str:address>&from=<str:from>&to=<str:to>',
views.EventViewSet.as_view({"get": "list"})),
path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]
Сценарий:
На моем веб-интерфейсе есть форма, где вы можете выбрать свой почтовый индекс и диапазон дат. Когда пользователь просто вставляет свой почтовый индекс, он получает все события сегодня, и URL должен выглядеть следующим образом:
http://127.0.0.1: 8000 / events / postcode = 12345
Когда пользователь выбирает дату и почтовый индекс, он должен выглядеть следующим образом:
http://127.0.0.1: 8000 / events / postcode = 12345 & from = 2019-01-01
С диапазон дат + почтовый индекс, подобный следующему:
http://127.0.0.1: 8000 / events / postcode = 12345 & from = 2019-01-01 & to = 2019-02-01
URL должен быть динамически построен. Второй путь в моем фрагменте кода urls.py - это обходной путь, но этот URL не создается динамически. Моей первой идеей было просто установить значения NULL, но в результате мы получили большой URL без информации.
Я уже пытался работать с полем поиска, но вы можете использовать его только с одним значением.
Есть ли другой встроенный django или django rest подход для достижения этого динамического c URL с динамическими c параметрами запроса?