Python アプリで Django Rest Framework を使用しており、API 認証に JSON Web Token Authentication (DRF JWT) を使用しています。
私の問題は、カスタムコントローラーを構築しているときに発生します。calculations.py作成したファイル内の関数に特定の URL を指定しました。以下は、それらがどのように見えるかです。
urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
from rest_framework import routers
from app.serializers import xxxViewSet, yyyViewSet
from app.calculations import getReturns
router = routers.DefaultRouter()
router.register(r"xxx", xxxViewSet)
router.register(r"yyy", yyyViewSet)
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^api/auth/token/$', 'rest_framework_jwt.views.obtain_jwt_token'),
url(r'^api/auth/', include('rest_framework.urls', namespace='rest_framework')),
url(r'^api-token-verify/', 'rest_framework_jwt.views.verify_jwt_token'),
url(r'^api/', include(router.urls)),
**url(r'^getReturns/', getReturns),**
)
calculations.py
from django.http import HttpResponse
from .models import xxx, yyy, zzz, aaa
def getReturns(request):
data = request.GET('data')
**running calculations here on data and giving out response**
return HttpResponse(response)
serializers.py
from rest_framework.authentication import SessionAuthentication, BasicAuthentication
from rest_framework import routers, serializers, viewsets, permissions
from rest_framework_jwt.authentication import JSONWebTokenAuthentication
from .models import xxx, yyy, zzz, aaa
class xxxSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = xxx
fields = ('id', 'name')
class xxxViewSet(viewsets.ModelViewSet):
authentication_classes = [SessionAuthentication, BasicAuthentication, JSONWebTokenAuthentication]
permission_classes = [permissions.IsAuthenticated, permissions.IsAdminUser]
queryset = xxx.objects.all()
serializer_class = xxxSerializer
上記のserializers.pyファイルには、すべてのモデルのシリアライザー クラスと、同じモデルのビューセットが含まれています。ビューセットを にまだ転送していないviews.pyため、ファイルは今のところ空です。
いずれにせよ、mycalculations.pyはこれらのファイルとは別のものであり、このファイルで定義されている関数は、ビューを介さずに「/getReturns/」URL によって直接呼び出されています。関数が実行される前に承認クラスが呼び出されるように、計算ファイルで定義された関数をビューセットに組み込むにはどうすればよいですか?