मेरे पास कुछ ऐसे उपयोगकर्ता हैं जिन्हें एक निश्चित दृश्य देखने की अनुमति है।अनुमति अनुमति दे सकता है Mixin और LoginRequiredMixin संयुक्त हो सकता है?
उपयोगकर्ताओं के लिए प्रवेश और उन उपयोगकर्ताओं है कि उस लॉगिन नहीं देख सकते हैं, मैं उपयोग कर सकते हैं के लिए एक 403 Forbidden
साथ शिकायत करने के लिए अनुमति देने के लिए निम्नलिखित (के रूप में समझाया here):
@permission_required('polls.can_vote', raise_exception=True)
@login_required
def my_view(request):
...
अपेक्षा के अनुरूप यह वास्तव में काम करता है। लेकिन मेरे सभी विचार वर्ग आधारित विचार हैं। चूंकि Django 1.9 (अंत में!) सुंदर चीजें बनाने के लिए सुंदर मिश्रणों का एक समूह है जो सजावटी के माध्यम से केवल संभव था। हालांकि ...
class MyClassView(LoginRequiredMixin, PermissionRequiredMixin, TemplateView):
raise_exception = <???>
permission_required = 'polls.can_vote'
template_name = 'poll_vote.html'
यह काम नहीं करता है। क्योंकि raise_exception
ध्वज का उपयोग LoginRequiredMixin
और PermissionRequiredMixin
दोनों द्वारा किया जाता है, इसलिए मैं इसे किसी भी चीज़ पर सेट नहीं कर सकता।
- अगर
raise_exception
True
है, जब कोई उपयोगकर्ता में लॉग इन नहीं कर रहा है एक403 Forbidden
(है जो मैं नहीं चाहता) प्राप्त करता है। - अगर
raise_exception
False
है, वह यह है कि नहीं दृश्य देखने की अनुमति, प्रवेश पृष्ठ जो है, क्योंकि उपयोगकर्ता के प्रवेश, पृष्ठ के लिए फिर से रीडायरेक्ट करेगा पुनः निर्देशित किया जाएगा एक उपयोगकर्ता। एक बिल्कुल फैंसी रीडायरेक्ट लूप बनाना।
बेशक मैं अपने स्वयं के मिश्रण को लागू कर सकता हूं जो मुझे अपेक्षित व्यवहार करता है, लेकिन क्या यह देखने में कोई Django-तरीका है? (urls.py
में नहीं)
ठीक है, मैं देखता हूं। धन्यवाद, सिर्फ एक प्रश्न: 'LoginRequiredMixin' की आवश्यकता नहीं है, है ना? क्या वहां कोई कारण है कि आप इसे वहां रखते हैं? – MariusSiuram
@ मारियससिअराम, आप बिल्कुल सही हैं। इसके अलावा, कोड में एक तार्किक दोष था, जो अब (उम्मीद है) हल हो गया है। –
मुझे लगता है, मुझे ऐसी परिस्थितियों का एहसास नहीं हुआ जिसमें उपयोगकर्ता में एक गैर-लॉग इन की कुछ अनुमति थी (क्या यह तार्किक दोष था?), लेकिन मुझे लगता है कि मैं मिक्सिन को पूरी तरह समझता हूं। धन्यवाद। – MariusSiuram