Django REST Frameworkでviewにアクセス制限を設定する。
2022/3/17
2022/3/17
Django REST FrameworkでAPIを作成していると「このviewの操作は管理者以外は利用させたくない」という場面があります。
そこでviewにアクセスするユーザーの制限をかける設定を調べてみました。
アクセス制限(Permissions)の設定をする方法
APIのviewにアクセス制限をつける方法には、「Viewクラスごとに設定する方法」と「デフォルトのアクセス制限の設定を変える方法」の2つのパターンがあります。
デフォルトの設定をする
「settings.py」にあらかじめ下記コードを記載すると、デフォルトの設定ができます。viewにアクセス制限の設定がない場合(permission_classesの記載がない場合)は、この設定が適用されることになります。
# viewへのアクセス制限のデフォルト設定
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated', # ←ここがデフォルトの設定になる
],
}
Viewクラスごとに設定する
Viewクラスにアクセス制限を設定したい場合は、「permission_classes」に記載します。
from rest_framework.permissions import AllowAny
from rest_framework import generics
from .serializers import PostSerializer
class PostListView(generics.ListAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
permission_classes = (AllowAny,) # ←ここ
アクセス制限(Permissions)の種類
種類 | 内容 |
---|---|
AllowAny | 誰でも利用できる |
IsAuthenticated | 認証済みのユーザーのみ利用できる |
IsAdminUser | 管理者権限を持つユーザーのみ利用できる |
IsAuthenticatedOrReadOnly | 認証済みのユーザーは利用できる それ以外のユーザーは読み取りのみできる(GETなど) |
DjangoModelPermissions | ※調べ中… |
DjangoModelPermissionsOrAnonReadOnly | ※調べ中… |
DjangoObjectPermissions | ※調べ中… |
「DjangoModelPermissions」「DjangoModelPermissionsOrAnonReadOnly」「DjangoObjectPermissions」は、まだ把握できていないので今後調べて更新する予定です。
詳しく知りたい方はこちらの記事を参考にしてみてください。
最近の記事
![](/_next/image?url=%2Fimages%2Fnoimage.png&w=3840&q=75)
【Supabase + JavaScript】よく使う処理まとめ
最近、JavaScript(Next.js)とSupabaseでWEBサイトを作り始めました!
そこで今回は、JavaScriptでSupabaseを使う際のよく利用する処理をメモとして記載し...
2023/5/24
2023/5/24
![](/_next/image?url=%2Fimages%2Fnoimage.png&w=3840&q=75)
AI画像生成「Stable Diffusion」をGoogle Colaboratoryで実行する方法メモ
目次1)Stable Diffusion WEB UIのGitHubを開く2)使いたいモデルを選ぶ3)Google Colaboratoryを実行する4)WEB UIのページを開く5)画像生...
2023/5/20
2023/5/20
![](/_next/image?url=%2Fimages%2Fnoimage.png&w=3840&q=75)
【Next.js 13】Googleタグマネージャの設定方法。
Next.js 13でGoogle Tag Managerを設定する方法を調べてみました。
とりあえずは動く処理ができたので、その方法をメモしておきます。
目次今回編集するファイルファイ...
2023/5/15
2023/5/15
![](/_next/image?url=%2Fimages%2Fnoimage.png&w=3840&q=75)
Next.js 13のアプリ作成時に聞かれる質問まとめ
Next.js 13で新しいアプリケーションを作成する際、はじめにいくつかの質問に答えることが求められます。
この記事では、その質問の内容と解説をメモしていきます!また今回内容がわからなかった...
2023/5/6
2023/5/25
![](/_next/image?url=%2Fimages%2Fnoimage.png&w=3840&q=75)
【Next.js】DjangoのAPIで記事のタグを更新したい
DjangoのAPIを使って、Next.jsからデータを新規作成や更新する時に、同時に関連データ(ManyToMany)も変更したい。
今回は「記事(Post)」を新規作成/更新して、その記事...
2023/2/15
2023/2/15
![](/_next/image?url=%2Fimages%2Fnoimage.png&w=3840&q=75)
【GAS】複数スプレッドシートを一括CSVダウンロードする
複数のスプレッドシートをCSVファイルにしてダウンロードしたい時に、1シート毎にcsvダウンロードをしていくのが大変だったので、少し楽にできる方法を調べてみました。
今回は、そんな複数スプレッ...
2023/2/13
2023/2/13