Как обрабатывать ошибки в django представлениях? - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть вид для входа в систему, и когда пользователь не существует, он выдает мне ошибку, я хотел бы, чтобы эта ошибка была напечатана в шаблоне, говоря, что пользователь не существует, попробуйте этот способ, но это не так работать на меня. Был бы какой-нибудь другой способ заставить это работать?

Представление

def login_rfid(request):
'''
Login
'''

if request.method == 'POST':
    username = ''
    if 'username' in request.POST:
        print("sasrfwrfsrsf")
        rfid = request.POST['username']

        user = User.objects.get(rfid=rfid)

        if user is not None:
            user.backend = 'django.contrib.auth.backends.ModelBackend'
            login(request, user)
            return redirect('/')
    else:
        messages.error(request, 'The user does not exist')
return render(request, "registration/login_rfid.html")

HTML

{% if messages %}
    <div class="span12">
        {% for message in messages %}
            <div class="alert alert-{{ message.tags }}">
                {{ message|safe }}
            </div>
        {% endfor %}
    </div>
{% endif %}

ОШИБКА

enter image description here

1 Ответ

0 голосов
/ 30 апреля 2020

Хорошо, я не понимаю, почему вы написали имя пользователя = '' в начале функции, но вот код, который будет работать для вас

def login2(request):
    # Check if the user is already logged in or not
    if request.user.is_authenticated:
        return redirect("/service-page.html")

    if request.method == "POST":
        username = request.POST["username"]
        password = request.POST["password"]

        user = authenticate(username=username,password=password)

        if user is not None:
            login(request, user)
            return redirect("/service-page.html")
        else:
            messages.error(request,"Invaild Credentials, Please try again")
            return render(request,"login.html")
    else:
        return HttpResponse("Only POST Methods are allowed baby")
    return HttpResponse("Wrong password")
...