AttributeError at /sign-up and /sign-in 'WSGIRequest' object has no attribute 'is_ajax'
Я получаю эту проблему, любая помощь будет оценена по достоинству, Я получаю ошибку при попытке войти в систему или зарегистрироваться.Error bellow. AttributeError at /sign-up 'WSGIRequest' object has no attribute 'is_ajax' I know that function is depreciated now, but i can't seem to fix the issue.
mixins.py
class AjaxFormMixin(object):
'''
Mixin to ajaxify django form - can be over written in view by calling form_valid method
'''
def form_invalid(self, form):
response = super(AjaxFormMixin, self).form_invalid(form)
if self.request.is_ajax():
message = FormErrors(form)
return JsonResponse({'result': 'Error', 'message': message})
return response
def form_valid(self, form):
response = super(AjaxFormMixin, self).form_valid(form)
if self.request.is_ajax():
form.save()
return JsonResponse({'result': 'Success', 'message': ""})
return response
views.py
Я знаю, что есть пост с похожей проблемой, но я вроде как пытаюсь исправить это на своей стороне.

По состоянию на django-3.1, метод .is_ajax() [Django-doc] был устаревшим. Действительно, в release notes мы видим:
Метод
HttpRequest.is_ajax()устарел, так как он полагался на специфический для jQuery способ обозначения AJAX-вызовов, в то время как в настоящее время, как правило, используется JavaScript Fetch API. В зависимости от вашего случая использования, вы можете либо написать свой собственный метод определения AJAX, либо использовать новый методHttpRequest.accepts(), если ваш код зависит от HTTP-заголовка Accept клиента.
Первоначально он использовал:
def is_ajax(): return request.headers.get('x-requested-with') == 'XMLHttpRequest'
Но обратите внимание, что это является и всегда было чем-то специфическим для jQuery, и поэтому это не имеет особого смысла: браузер или HTTP библиотека всегда могут имитировать это поведение, и вы можете делать AJAX запросы без этого заголовка, и поэтому это не надежно.
Вы можете проверить, принимает ли браузер json/xml с помощью .accepts(…) [Django-doc], что, вероятно, является тем, что AJAX запрос попытается принять, так:
self.request.accepts('application/json')
или:
self.request.accepts('application/xml')
являются вероятными кандидатами для этого.
Используйте его как if request.headers.get('x-requested-with') == 'XMLHttpRequest': везде так:
def profile_view(request):
'''
function view to allow users to update their profile
'''
user = request.user
up = user.userprofile
form = UserProfileForm(instance=up)
if request.headers.get('x-requested-with') == 'XMLHttpRequest':
form = UserProfileForm(data=request.POST, instance=up)
if form.is_valid():
obj = form.save()
obj.has_profile = True
obj.save()
result = "Success"
message = "Your profile has been updated"
else:
message = FormErrors(form)
data = {'result': result, 'message': message}
return JsonResponse(data)
else:
context = {'form': form}
context['google_api_key'] = settings.GOOGLE_API_KEY
context['base_country'] = settings.BASE_COUNTRY
return render(request, 'users/profile.html', context)
Для представлений на основе классов используйте его как if self.request.headers.get('x-requested-with') == 'XMLHttpRequest':