2011-12-21 14 views
5

मेरे पास एक ऐसी साइट है जहां उपयोगकर्ता अपनी सूचियां बना और संपादित कर सकते हैं।Django: UpdateView प्रति उपयोगकर्ता को प्रतिबंधित

मैं उपयोगकर्ताओं को सूचियां बनाने की अनुमति देने के लिए जेनेरिक व्यू CreateView का उपयोग कर रहा हूं।

मैं जेनेरिक व्यू अपडेटव्यू का उपयोग सूचियों को संपादित करने की अनुमति देने के लिए करना चाहता हूं, लेकिन login_required=True इस मामले में पर्याप्त नहीं है, क्योंकि केवल सूची निर्माता ही उसकी सूची संपादित कर सकता है।

2 सवाल:

1) वहाँ किसी भी पैरामीटर है कि मैं इस प्रतिबंध जोड़ने के लिए URLconf में निर्दिष्ट कर सकते हैं?

2) क्या मैं उन सामान्य विचारों को लगा सकता हूं केवल पोस्ट के साथ काम करना चाहिए और प्राप्त नहीं करना चाहिए?

धन्यवाद

उत्तर

4

आप पर get_queryset रद्द कर सकते थे UpdateView:

def get_queryset(self): 
    base_qs = super(YourListUpdateView, self).get_queryset() 
    return base_qs.filter(user=self.request.user) 
2

1) आप डेकोरेटर लिख सकते हैं और यह login_required डेकोरेटर, यानी के रूप में एक ही तरह से उपयोग कर सकते हैं:

def user_permitted(function): 
    def decorator(function): 
     def _wrapped_view(request, *args, **kwargs): 
      # get obj from request 
      if obj.user != request.user: 
       return HttpResponseRedirect(reverse('forbidden')) 
      return function(request, *args, **kwargs) 
     return _wrapped_view 
    return decorator(function) 

2) हाँ, देख decorators और Decorating class-based views

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