যদিও এই প্রশ্নের গৃহীত উত্তর প্রশ্নের উত্তরটি যেমনটি বলা হয়েছিল তেমন উত্তর দেয়, তবে আমি অনুভব করি যে এটি আসল সমস্যাটি হাতে এনে সমাধান করে না।
এই উত্তরের সম্পূর্ণতার জন্য, ব্র্যান্ডসযোগ্য এইচটিএমএল এপিআই নিষ্ক্রিয় করা যেমন রেন্ডারার ক্লাস থেকে সরিয়ে এটি করা হয়:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
)
}
যাইহোক, আসল ইস্যুটি যে প্রশ্নটির প্রতি ইঙ্গিত দেয় তা হ'ল লোকেরা অনুমোদন ছাড়াই এপিআইতে পোস্ট করতে সক্ষম হয়। ফর্মটি অপসারণ করার সময় এটি কম স্পষ্ট করে তোলে, এই উত্তরটি এপিআই শেষের দিকগুলি রক্ষা করে না।
সর্বনিম্ন, কেউ এই প্রশ্নটি আবিষ্কার করে এবং এআইপিটিকে অননুমোদিত, বা অননুমোদিত পোষ্ট জমা দেওয়ার হাত থেকে রক্ষা করতে চাইছেন; এপিআই অনুমতিগুলি পরিবর্তন করতে খুঁজছেন
নিম্নলিখিতটি কেবলমাত্র ব্যবহারকারীকে প্রমাণীকরণ না করা হলে পঠনের জন্য সমস্ত শেষ পয়েন্ট সেট করবে।
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
)
}
ব্যবহারকারী লগ ইন না করা আপনি যদি API টি সম্পূর্ণরূপে আড়াল করতে চান তবে আপনি এটি ব্যবহার করতেও পারেন IsAuthenticated
।
এফওয়াইআই: অনুমতিগুলির প্রতিক্রিয়া হিসাবে এটি ফর্মটি HTML ব্রাউজযোগ্য API থেকে সরিয়ে ফেলবে। যখন কোনও প্রমাণীকৃত ব্যবহারকারী লগ ইন করে, ফর্মটি আবার উপলব্ধ হবে।
বোনাস রাউন্ড :
কেবলমাত্র ডিভাইসে ব্রাউজযোগ্য এইচটিএমএল API সক্ষম করুন:
DEFAULT_RENDERER_CLASSES = (
'rest_framework.renderers.JSONRenderer',
)
if DEBUG:
DEFAULT_RENDERER_CLASSES = DEFAULT_RENDERER_CLASSES + (
'rest_framework.renderers.BrowsableAPIRenderer',
)
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
),
'DEFAULT_RENDERER_CLASSES': DEFAULT_RENDERER_CLASSES
}