Я хочу обработать три ViewSet с одним URL
отношением к предоставленному request.data
.
Давайте сделаем это более понятным, углубившись в код:
Вот мой router.py
# vim: ts=4 sw=4 et
from django.conf.urls import url, include
from rest_framework.routers import DefaultRouter
from . import viewsets
router = DefaultRouter()
router.register(r'endpoint', viewsets.MyViewSet, 'my-viewset')
notification_urls = [
url(r'^', include(router.urls)),
]
Вопрос1:
Можно ли обработать три ViewSet
с одним URL?
Например, , согласно отправленным данным, я хочу динамически выбрать другой ViewSet вместо назначенного MyViewSet
.
---> /endpoint/ ---- | request.data['platform'] == 1 ----> ViewSet1
| request.data['platform'] == 2 ----> ViewSet2
| request.data['platform'] == 3 ----> ViewSet3
и I знаю, что я могу вызвать другие методы ViewSet в MyViewSet
что-то вроде этого Вопрос , но это действительно грязный.
Вопрос2:
Можно ли динамически передавать дополнительные параметры относительно данных, отправленных во ViewSet?
Например, , согласно отправленным данным, я хочу передать дополнительный параметр в MyViewSet
.
Я знаю, что могу сделать все это вещи в методе ViewSet initial
, например:
def initial(self, request, *args, **kwargs):
self.set_platform()
super(NotificationViewSet, self).initial(request, *args, **kwargs)
Но я хочу, чтобы эти вещи обрабатывались при MyViewSet
создании.
ПРИМЕЧАНИЕ: Может быть, я справлюсь с этим, написав Middleware
, но если есть другие варианты, я был бы очень признателен за то, что поделился ими со мной.