UnboundLocalError в django при передаче sql-запроса

Вот мое сообщение об ошибке:

Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/mainpage.html

Django Version: 3.2.12
Python Version: 3.7.4
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'website']
Installed Middleware:
('whitenoise.middleware.WhiteNoiseMiddleware',
 'django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'whitenoise.middleware.WhiteNoiseMiddleware')



Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\user\desktop\dentist\website\views.py", line 40, in mainpage
    c.execute(query)

Exception Type: UnboundLocalError at /mainpage.html
Exception Value: local variable 'query' referenced before assignment

Это мой python views.py

Вот код HTML (mainpage.html):

В настоящее время я пытаюсь сделать так, чтобы страница входа в систему идентифицировала пользователя, который входит в систему, после чего отображала его информацию в виде таблицы, используя запрос, который я буду выполнять в SQL. Я не уверен, почему возникает ошибка.

Я попытался добавить комментарии к вашему коду.

def mainpage(request):
    if 'your-email' not in request.session:
        if request.method == "POST":
            email = request.POST['your-email']
            password = request.POST['your-password']
            if email!='' and password!='':
                verification = "SELECT * FROM users WHERE email = '" + email + "' AND password = '" + password + "';"
                c = connection.cursor()
                c.execute(verification)
                account_exist = c.fetchall()
                results_dict = {}
                if not account_exist:
                    results_dict = {'error':'Please try again. Entered username or password is wrong'}
                    return render(request, 'login.html',results_dict)
                request.session['your-email'] = email
                # You would need to set your query here so it can be used below
                query = "SELECT email, display_name, age, phone_number, vaccination_status, rating, count_rate FROM users WHERE email = '" + request.session['your-email'] + "';"
            else:
                # If email=='' and password=='' you need to render your login template
                return render(request, 'login.html')
        else:
            # If request.method == "GET" you need to render your login template
            return render(request, 'login.html')
    else:
        query = "SELECT email, display_name, age, phone_number, vaccination_status, rating, count_rate FROM users WHERE email = '" + request.session['your-email'] + "';"
    c = connection.cursor()
    c.execute(query)    # this is line 40 the error message
    results = c.fetchall()
    result_dict = {'records': results}
    return render(request, 'mainpage.html', result_dict)
Вернуться на верх