নতুন সিবিভিগুলি কীভাবে কাজ করে তা বুঝতে আমার কিছুটা সমস্যা হচ্ছে। আমার প্রশ্নটি হ'ল, আমার সমস্ত দর্শন এবং তার মধ্যে কয়েকটিতে সুনির্দিষ্ট অনুমতিতে লগইন হওয়া দরকার। ফাংশন-ভিত্তিক ভিউগুলিতে আমি এটি @ পারমিশন_প্রযুক্তি () এবং ভিউ-এ লগইন_প্রযুক্তিযুক্ত বৈশিষ্ট্য দিয়ে করি তবে নতুন ভিউগুলিতে এটি কীভাবে করা যায় তা আমি জানি না। জ্যাঙ্গো ডক্সে এর কোন ব্যাখ্যা রয়েছে? আমি কিছুই পাইনি। আমার কোডে কী ভুল?
আমি @ স্মার্ট_ডেকোরেটরটি ব্যবহার করার চেষ্টা করেছি তবে এটির জবাব দেয় " টাইপ এয়ারার এট / স্পেসস / প্রয়েবা / _ র্যাপড ভিউ () কমপক্ষে 1 টি আর্গুমেন্ট নেয় (0 দেওয়া) "
এখানে কোড (জিপিএল) দেওয়া হল:
from django.utils.decorators import method_decorator
from django.contrib.auth.decorators import login_required, permission_required
class ViewSpaceIndex(DetailView):
"""
Show the index page of a space. Get various extra contexts to get the
information for that space.
The get_object method searches in the user 'spaces' field if the current
space is allowed, if not, he is redirected to a 'nor allowed' page.
"""
context_object_name = 'get_place'
template_name = 'spaces/space_index.html'
@method_decorator(login_required)
def get_object(self):
space_name = self.kwargs['space_name']
for i in self.request.user.profile.spaces.all():
if i.url == space_name:
return get_object_or_404(Space, url = space_name)
self.template_name = 'not_allowed.html'
return get_object_or_404(Space, url = space_name)
# Get extra context data
def get_context_data(self, **kwargs):
context = super(ViewSpaceIndex, self).get_context_data(**kwargs)
place = get_object_or_404(Space, url=self.kwargs['space_name'])
context['entities'] = Entity.objects.filter(space=place.id)
context['documents'] = Document.objects.filter(space=place.id)
context['proposals'] = Proposal.objects.filter(space=place.id).order_by('-pub_date')
context['publication'] = Post.objects.filter(post_space=place.id).order_by('-post_pubdate')
return context