В django, как я могу получить подробную информацию об ошибках в ajax? - PullRequest
0 голосов
/ 22 апреля 2019

Я учусь веб-программированию с Django.В настоящее время я пытаюсь создать веб-страницу, на которой пользователи могут обновить свой профиль пользователя (например, электронная почта, псевдоним).Я использую AJAX для обработки этих данных.Но я только что задал вопрос, как я могу получить подробную информацию об ошибке ajax?

Например, пользователь хочет обновить свой ник или электронную почту, но ник или электронная почта, которую он публикует, уже существует в базе данных.В ajax я использую error:function (XMLHttpRequest, textStatus, errorThrown) {} для получения информации об ошибке.Но я просто получаю что-то вроде «500 Внутренняя ошибка сервера».Тем не менее, в консоли браузера я вижу, дублированы ли «никнейм» или «электронная почта».Поэтому мне интересно, как я могу узнать, какой из них дублируется?

Мой view.py - это:

@login_required
def edit_usr_profile(request):
    user = request.user
    objs = UserProfile.objects.filter(usr=user)
    usr_objs = UserProfile.objects.get(usr=user)
    if request.method == 'POST':
        if request.is_ajax():
            usr_objs.nickname = request.POST.get('nickname')
            usr_objs.email = request.POST.get('email')
            usr_objs.save()
    return render(request, 'account/edit_profile.html', {'objs':objs})

мой ajax кодэто:

            $.ajax({
                type:'POST',
                url:'./',
                data:{
                    async: false,
                    nickname:usr_nickname,
                    email:usr_email,
                    csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val()
                },
                success:function () {
                    alert('New profile saved!')
                    //window.location.reload()
                },
                error:function (XMLHttpRequest, textStatus, errorThrown) {
                    alert('Error! Please check your entry and try again!')
                }
            })

Буду очень признателен, если вы сможете мне помочь!

1 Ответ

0 голосов
/ 22 апреля 2019

Это довольно сложный вопрос для начинающих. В целом, внутренняя часть должна определить, все ли в порядке, и отправить код состояния / результат / и т. Д. В часть JavaScript.

#THIS CODE MAY NEEDS SOME MODIFY TO PUT IN USE.

@login_required
def edit_usr_profile(request):
    # AN RESULT DICT THAT SAVES YOUR STATUS INFO
    result = collections.OrderedDict()
    result['code'] = "-1"
    result['message'] = ""
    result['data'] = ""

    user = request.user
    objs = UserProfile.objects.filter(usr=user)
    usr_objs = UserProfile.objects.get(usr=user)

    if request.method == 'POST':
        if request.is_ajax():
            try:
                usr_objs.nickname = request.POST.get('nickname')
                usr_objs.email = request.POST.get('email')
                usr_objs.save()
                # CHANGE THE INFO AND STATUS AS YOUR WISH
                result['code'] = "1"
                result['message'] = "Success"
            except Exception as e:
                # SAVES THE ERROR INFO 
                result['code'] = "-1"
                result['message'] = "Failed with error:"+str(e)
    # RETURN THE RESULT DICT 
    return render(request, 'account/edit_profile.html', {'objs':objs,'resultInfo':result})

Тогда вам просто нужно оценить часть кода в вашем JavaScript и определить, показывать информацию или нет.

Обычно веб-приложения не должны содержать 500 ошибок как часть своей функции. Попробуйте избежать этого с помощью механизма Try-catch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...