मैं उपयोगकर्ता एक विशेष उपयोगकर्ता सेटिंग पृष्ठ को देखने के लिए अनुमति दी है इससे पहले कि कुछ शर्तों की जांच करने की कोशिश कर रहा हूँ। मैं user_passes_test सजावट का उपयोग करके इसे प्राप्त करने की कोशिश कर रहा हूं। फ़ंक्शन निम्नानुसार क्लास आधारित दृश्य में बैठता है। मैं दृश्य में get_initial फ़ंक्शन को सजाने के लिए विधि सजावट का उपयोग कर रहा हूं।कैसे वर्ग आधारित विचारों में user_passes_test डेकोरेटर उपयोग कैसे करें?
def test_settings(user):
print "I am in test settings"
if not (user.profile.is_student or user.profile.is_parent or user.profile.is_teacher):
return False
else:
return True
मैं डेकोरेटर के साथ नीचे त्रुटि हो रही है:
class UserSettingsView(LoginRequiredMixin, FormView):
success_url = '.'
template_name = 'accts/usersettings.html'
def get_form_class(self):
if self.request.user.profile.is_student:
return form1
if self.request.user.profile.is_teacher:
return form2
if self.request.user.profile.is_parent:
return form3
@method_decorator(user_passes_test(test_settings, login_url='/accounts/usertype/'))
def get_initial(self):
if self.request.user.is_authenticated():
user_obj = get_user_model().objects.get(email=self.request.user.email)
if user_obj.profile.is_student:
return { ..........
...... ....
नीचे test_settings कार्य है।
File "../django/core/handlers/base.py", line 111, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "../django/views/generic/base.py", line 69, in view
return self.dispatch(request, *args, **kwargs)
File "../braces/views.py", line 107, in dispatch
request, *args, **kwargs)
File "../django/views/generic/base.py", line 87, in dispatch
return handler(request, *args, **kwargs)
File "../django/views/generic/edit.py", line 162, in get
form = self.get_form(form_class)
File "../django/views/generic/edit.py", line 45, in get_form
return form_class(**self.get_form_kwargs())
File "../django/views/generic/edit.py", line 52, in get_form_kwargs
'initial': self.get_initial(),
File "../django/utils/decorators.py", line 29, in _wrapper
return bound_func(*args, **kwargs)
TypeError: _wrapped_view() takes at least 1 argument (0 given)
मैं कैसे इस त्रुटि को हल करने के लिए यकीन नहीं है। क्या मैं गलत कार्य पर सजावटी को लागू कर रहा हूं? कोई भी लीड सहायक होगी।
समझ गया। धन्यवाद! – pxUx
आपका उदाहरण पढ़ता है कि यदि उपयोगकर्ता प्रमाणीकृत है तो लॉगिन यूआरएल वापस कर दें। अगर/अन्य को बदला जाना चाहिए? – pymarco
@pymarco अच्छी जगह है, अब तय – Alasdair