2016-08-02 15 views
9

मैं मॉडल क्वेरीसेट के लिए list_view बनाने का प्रयास कर रहा हूं। मेरे सर्वर को चलाते समय, यह लौटाता है: विशेषता त्रुटि - 'फ़ंक्शन' ऑब्जेक्ट में 'as_view' कोई विशेषता नहीं है। मैं इसे हल करने में मेरी मदद करने की सराहना करता हूं।Django/पायथन: 'फ़ंक्शन' ऑब्जेक्ट में कोई विशेषता नहीं है 'as_view'

Views.py:

@login_required 
class live_bids(ListView): 

    model = Post 
    template_name = 'loggedin_load/live_bids.html' 

    def get_queryset(self): 
     return Post.objects.all().prefetch_related('bids').filter(user=self.request.user) 

urls.py:

url(r'^live_bids/$', live_bids.as_view()), 

उत्तर

21

आप login_required डेकोरेटर ऐसे ही एक वर्ग पर उपयोग नहीं कर सकते

यहाँ मेरी कोड है। आपको method_decorator का उपयोग करने की आवश्यकता है। Django 1.9+ पर, आप वर्ग को सजाने कर सकते हैं:

from django.contrib.auth.decorators import login_required 
from django.utils.decorators import method_decorator 

@method_decorator(login_required, name='dispatch') 
class LiveBids(LoginRequiredMixin, ListView): 
    ... 

पहले के संस्करणों पर, आप dispatch ओवरराइड और वहाँ method_decorator उपयोग करने के लिए की जरूरत है।

class LiveBids(LoginRequiredMixin, ListView): 
    @method_decorator(login_required) 
    def dispatch(self, *args, **kwargs): 
     return super(LiveBids, self).dispatch(*args, **kwargs) 

सबसे आसान समाधान (Django के साथ काम करता 1.9+)

from django.contrib.auth.mixins import LoginRequiredMixin 

class LiveBids(LoginRequiredMixin, ListView): 
    model = Post 
    template_name = 'loggedin_load/live_bids.html' 

    def get_queryset(self): 
     return Post.objects.all().prefetch_related('bids').filter(user=self.request.user) 

ध्यान दें कि उदाहरण में, मैं LiveBids को देखने के नाम बदल लें, की सिफारिश की मैच के लिए डेकोरेटर के बजाय LoginRequiredMixin उपयोग करने के लिए है Django शैली। आपको यूआरएल पैटर्न भी अपडेट करना होगा।

+0

फ्लास्क के लिए ऐसा करने का कोई तरीका है? –

+1

@ जॉन स्मिथ इस सवाल का फ्लास्क से कोई लेना देना नहीं है। कृपया एक नया प्रश्न पूछें। – Alasdair

+0

[किया गया] (https://stackoverflow.com/questions/46932366/how-to-use-login-required-with-a-class-in-flask) –

संबंधित मुद्दे

 संबंधित मुद्दे