Смотрите на свой код:
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, то есть у вас по планам условие будет выполнятся всегда, то есть в планах инициализация переменных произойдёт. Но вот программа этого не знает и она ругается.