जबकि इस प्रश्न का स्वीकृत उत्तर प्रश्न का उत्तर देता है क्योंकि यह शब्द था, मुझे लगता है कि यह वास्तविक मुद्दे को हल नहीं करता है।
इस उत्तर में पूर्णता के लिए, ब्राउज़ करने योग्य HTML एपीआई को अक्षम करना इसे रेंडरर वर्गों से हटाकर किया जाता है:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
)
}
हालाँकि, वास्तविक समस्या यह है कि लोगों को प्रमाणीकरण के बिना एपीआई में पोस्ट करने में सक्षम होना चाहिए। प्रपत्र को हटाते समय यह कम स्पष्ट हो जाता है, यह उत्तर API समापन बिंदु की सुरक्षा नहीं करता है।
कम से कम, कोई व्यक्ति इस प्रश्न को पाता है और एपीआई को अनधिकृत, या अनधिकृत POST प्रस्तुतियाँ से बचाने के लिए देख रहा है; एपीआई अनुमतियाँ बदलने के लिए देख रहे हैं
निम्नलिखित सभी समापन बिंदुओं को केवल तब तक पढ़ा जाएगा जब तक कि उपयोगकर्ता प्रमाणित न हो जाए।
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
)
}
यदि आप पूरी तरह से एपीआई को छुपाना चाहते हैं जब तक कि उपयोगकर्ता लॉग इन न हो, आप भी उपयोग कर सकते हैं IsAuthenticated
।
FYI करें: यह HTML ब्राउज़ करने योग्य API से फ़ॉर्म को भी हटा देगा क्योंकि यह अनुमतियों के प्रति प्रतिक्रिया करता है। जब एक प्रमाणित उपयोगकर्ता लॉग इन करता है, तो फॉर्म फिर से उपलब्ध होगा।
बोनस दौर :
केवल देव में ब्राउज़ करने योग्य HTML 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
}