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 によって直接呼び出されています。関数が実行される前に承認クラスが呼び出されるように、計算ファイルで定義された関数をビューセットに組み込むにはどうすればよいですか?