My views.py:-
class AjaxUpdateView(AjaxMixin, UpdateView):
“”" An ‘AJAXified’ UpdateView for updating an object in the db
- Returns form in JSON format (for delivery to a modal window)
- Handles repeated form validation (via AJAX) until the form is valid
“”"
def get(self, request, *args, **kwargs):
""" Respond to GET request.
- Populates form with object data
- Renders form to JSON and returns to client
"""
super(UpdateView, self).get(request, *args, **kwargs)
return self.renderJsonResponse(request, self.get_form(), context=self.get_context_data())
def post(self, request, *args, **kwargs):
""" Respond to POST request.
- Updates model with POST field data
- Performs form and object validation
- If errors exist, re-render the form
- Otherwise, return sucess status
"""
# Make sure we have an object to point to
self.object = self.get_object()
form = self.get_form()
data = {
'form_valid': form.is_valid()
}
if form.is_valid():
obj = form.save()
# Include context data about the updated object
data['pk'] = obj.pk
try:
data['url'] = obj.get_absolute_url()
except AttributeError:
pass
return self.renderJsonResponse(request, form, data)
My forms.py:-
class SetPasswordForm(HelperForm):
enter_password = forms.CharField(max_length=100, required=True,
widget=forms.PasswordInput(attrs={‘autocomplete’: ‘off’}))
confirm_password = forms.CharField(max_length=100, required=True,
widget=forms.PasswordInput(attrs={‘autocomplete’: ‘off’}))
class Meta:
model = User
fields = [
'enter_password',
'confirm_password'
]
def clean(self):
cleaned_data = super(SetPasswordForm, self).clean()
enter_password = cleaned_data.get("enter_password")
confirm_password = cleaned_data.get("confirm_password")
if enter_password != confirm_password:
self.add_error('enter_password', " ")
self.add_error('confirm_password', "Password does not match")
return cleaned_data
Getting this error:-
2020-04-09 13:00:37,648 ERROR Internal Server Error: /set-password/
Traceback (most recent call last):
File "/home/user/inventree/inventree-env/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/home/user/inventree/inventree-env/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/user/inventree/inventree-env/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/user/inventree/inventree-env/lib/python3.6/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/home/user/inventree/inventree-env/lib/python3.6/site-packages/django/views/generic/base.py", line 97, in dispatch
return handler(request, *args, **kwargs)
File "/home/user/inventree/Inventorysolution/InvenTree/InvenTree/views.py", line 313, in get
super(UpdateView, self).get(request, *args, **kwargs)
File "/home/user/inventree/inventree-env/lib/python3.6/site-packages/django/views/generic/edit.py", line 190, in get
return super().get(request, *args, **kwargs)
File "/home/user/inventree/inventree-env/lib/python3.6/site-packages/django/views/generic/edit.py", line 133, in get
return self.render_to_response(self.get_context_data())
File "/home/user/inventree/inventree-env/lib/python3.6/site-packages/django/views/generic/edit.py", line 66, in get_context_data
kwargs['form'] = self.get_form()
File "/home/user/inventree/inventree-env/lib/python3.6/site-packages/django/views/generic/edit.py", line 33, in get_form
return form_class(**self.get_form_kwargs())
TypeError: __init__() missing 1 required positional argument: 'user'