2017-10-11 13 views
0

私は各api urlのアクセス許可を制御したいので、メソッド(投稿、取得、配置、削除)を含めますか?django rest frameworkは各api urlのアクセス許可を制御します

私のようなコードを試してみました:あなたはあなたのジャンゴ - 静止フレームワークアプリ内のカスタム権限クラスを作成することができます

from multiselectfield import MultiSelectField 

METHOD_CHOICES = (
    ('get','get'), 
    ('post','post'), 
    ('put','put'), 
    ('delete','delete') 
) 

class ApiPermessions(models.Model): 
    name = models.CharField(max_length=20, unique=True, null=True, blank=True) 
    user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True) 
    apiuri = models.CharField(max_length=20, verbose_name=u'授权api') 
    code = models.CharField(max_length=4, default=0000, null=True, blank=True, verbose_name=u'权限代码') 
    choices = MultiSelectField(choices=METHOD_CHOICES) 
+0

あなたは何を正確に求めていますか? HTTP動詞に基づいてDjango APIエンドポイントのアクセス許可を設定しようとしていますか? – alex

答えて

0

their docs hereを参照してください。

はあなたのアウトラインを与えるために、これは、これらの権限を定義するクラスのようになります。

from rest_framework import permissions, exceptions 

class CustomUserPermissions(permissions.BasePermission): 
    def has_permission(self, request, view): 
     request_method = request.method 
     request_user = getattr(request, 'user') 

     if request_user: 
      # Returns true if the request method is 
      # in the permissions set of the user object 
      return request_method in \ 
       user.api_permissions_set.all().values_list('choices', flat=True) 
あなたはそれがすべてに適用されます、それを通して、あなたの残りのフレームワークの設定の権限クラス、としてこれを定義することができます

自動的にビューを表示します。

'DEFAULT_PERMISSION_CLASSES': (
    'CustomUserPermissions', 
) 
関連する問題