Django: 文字列からクラスをImportする
Django 文字列からクラスをImportする。
サンプルのRepositoryはこちらです。
RepositoryはAPPごとのSettingと兼ねているのでご了承ください。
Djangoで文字列からクラスをImportしたいときありますよねー。
そういう時は、django.utils.module_loadingのimport_stringを使います。
from django.utils.module_loading import import_string
cl = import_string('rest_framework.permissions.IsAdminUser')
使い道
自分はPermissionを文字列の配列でsettings.pyに設定し、RestFrameWorkのViewsetで使いたかったときに使用しました。
SAMPLE_PERMISSIONS = [
'rest_framework.permissions.IsAuthenticated',
'sample_app.permissions.SamplePermission'
]
from django.conf import settings
from rest_framework.viewsets import ModelViewSet
from django.utils.module_loading import import_string
from .serializers import SampleSerializer
from .models import Sample
class SampleViewSet(ModelViewSet):
serializer_class = SampleSerializer
queryset = Sample.objects.all()
# ここで使用した。
# IsAuthenticated, SamplePermissionがPermissionsに適用される。
permission_classes = [
import_string(permission_class) for permission_class in settings.SAMPLE_PERMISSIONS]
こんな風に利用できます。
使う時がたまにあると思うので参考に、
サンプルのRepositoryはこちらです。
RepositoryはAPPごとのSettingと兼ねているのでご了承ください。
ではでは、よいDjangoライフを。
Author And Source
この問題について(Django: 文字列からクラスをImportする), 我々は、より多くの情報をここで見つけました https://qiita.com/sakunowman/items/3e2f9593337e52e2618c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .