मैं एक बड़े Django ऐप पर काम कर रहा हूं, जिसमें से अधिकांश को एक्सेस करने के लिए एक लॉगिन की आवश्यकता होती है। इसका मतलब यह है कि हमारे सारे ऐप में हम छिड़क चुके हैं:
@login_required
def view(...):
यह ठीक है, और जब तक हम इसे हर जगह जोड़ना याद करते हैं तब तक यह बहुत अच्छा काम करता है ! अफसोस की बात है कि कभी-कभी हम भूल जाते हैं, और विफलता अक्सर स्पष्ट रूप से स्पष्ट नहीं होती है। यदि किसी दृश्य का एकमात्र लिंक @login_required पृष्ठ पर है, तो आपको यह नोटिस करने की संभावना नहीं है कि आप वास्तव में लॉग इन किए बिना उस दृश्य तक पहुंच सकते हैं। लेकिन बुरे लोग नोटिस कर सकते हैं, जो एक समस्या है।
मेरा विचार व्यवस्था को उलटने का था। हर जगह @login_required टाइप करने के बजाय, मुझे कुछ ऐसा चाहिए:
@public
def public_view(...):
सिर्फ जनता के सामान के लिए। मैंने कुछ मिडलवेयर के साथ इसे लागू करने की कोशिश की और मुझे यह काम करने के लिए नहीं मिला। मेरे द्वारा उपयोग किए जा रहे अन्य मिडलवेयर के साथ मैंने जो कुछ भी बुरी तरह से बातचीत करने की कोशिश की, मुझे लगता है। अगली बार मैंने URL पैटर्न को ट्रेस करने के लिए कुछ लिखने की कोशिश की कि यह जांचने के लिए कि @public @login_required को चिह्नित नहीं किया गया है - कम से कम तब हम एक त्वरित त्रुटि प्राप्त करेंगे यदि हम कुछ भूल गए। लेकिन तब मैं यह नहीं बता पाया कि अगर @login_required को किसी दृश्य पर लागू किया गया हो तो कैसे बताऊं ...
तो, ऐसा करने का सही तरीका क्या है? सहायता के लिए धन्यवाद!