@gooooooose

Redirect перезагрудает страницу, django, что делать?

После нажатия на кнопку происходит проверка пользователя в бд, если есть, переадресация на главную. Но когда нажимаешь на кнопку, страница попросту обновляется, не понимаю в чем проблема?
html:
{% extends 'main.html' %}

{% block content %}
<div>
    <form method="post">
        {% csrf_token %}
        <label>Username: </label>
        <input type="text" placeholder="enter username" name="username"/>
        <label>Password: </label>
        <input type="password" placeholder="enter password" name="password"/>
        <input type="submit" value="login"/>
    </form>
</div>
{% endblock content %}


Python(Django):

def loginPage(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = ''
        try:
            user = User.objects.get(username=username)
            print(user)
        except:
            messages.error(request, 'User is not exist')

        user = authenticate(request, username=username, password=password)
        if user is not None:
            try:
                login(request, user)
                return redirect(request, 'home')
            except:
                print('erore')
    context = {}
    return render(request, 'base/login_registration.html', context)
  • Вопрос задан
  • 186 просмотров
Пригласить эксперта
Ответы на вопрос 1
@kurrbanov
Пишу бэкенд на Питоне
Даже если вы здесь отловите ошибку, то как вам django отобразит её? У вас в HTML же нет отображения messages.
except:
    messages.error(request, 'User is not exist')


Добавьте этот код в html-форму:
{% for message in messages %}
    <p>{{ message }}</p>
{% endfor %}


Видимо, он просто пользователя не находит и после того, как часть if request.method == "POST" отрабатывает, он просто возвращает на главную страницу:
return render(request, 'base/login_registration.html', context)

Если это так, то попробуйте посмотреть, что творится в БД, добавился ли созданный юзер туда вообще.

Если это не помогло, то попробуйте попринтить, что выводят username и password.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы