@Caeterra

Где ошибка в этом коде?

Здравствуйте. Подскажите где ошибка?

Так все работает:

def page(request, key):
    a = 0
    b = 50
    data = table.objects.order_by("place")[a:b]
    return render(request, 'index/index.html', {'data': data})


Так ошибка: Exception Value: local variable 'a' referenced before assignment

def page(request, key):
    if key == 1:
        a = 0
        b = 50
    data = table.objects.order_by("place")[a:b]
    return render(request, 'index/index.html', {'data': data})


Что я упускаю в условии?
  • Вопрос задан
  • 153 просмотра
Решения вопроса 2
Упускаете то, что происходит в вашем коде, если
key = 5
page(request, key)


Откуда там возьмуться значения a и b?
Ответ написан
netpastor
@netpastor
Python developer
Если я все правильно понимаю, то тут простая пейджинация данных
Попробукй использовать стандартный https://docs.djangoproject.com/en/dev/topics/pagin...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
syschel
@syschel
freelance/python/django/backend
Смотрите на свой код:
1. def page(request, key):
2.     if key == 1:
3.         a = 0
4.         b = 50
5.     data = table.objects.order_by("place")[a:b]

1 строка, объявили функцию
2 строк начали условие.
3 и 4 строка, выполняется только если условие верное, то есть если key равен 1. Если приходит любое значение key кроме 1, то в вашем коде НЕ создаются переменные a и b.
5 строка, вы пробуете использовать переменные которых не существует. Так как создаются они только при верном условии в строке 2.
То есть, чтобы код работал, вам надо инициализировать переменные или до условия или после, хоть с нулевым значением. К примеру так:
def page(request, key):
    a = 0
    b = 10
    if key == 1:
        a = 0
        b = 50
    data = table.objects.order_by("place")[a:b]

или так
def page(request, key):
    if key == 1:
        a = 0
        b = 50
    else:
        a = 0
        b = 10
    data = table.objects.order_by("place")[a:b]

Программе не важно, что вы возможно планируете всегда передавать только 1, то есть у вас по планам условие будет выполнятся всегда, то есть в планах инициализация переменных произойдёт. Но вот программа этого не знает и она ругается.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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