Вы опишите, что вы хотите получить от этого алгоритма, так будет понятнее.
Пока я вижу что у вас действительно запрашивает переменные до того как вы их определили.
Для начала надо чтобы цикл while был внутри условий на существование значений a и b в GET. И если значений нет, выдавать страницу без с. Вам же не обязательно определять весь контекст который затребован в шаблоне. Если какой-то контекстной переменной не будет, то просто будет пустое место и все.
Я бы сделал как-то так:
if 'a' in request.GET and 'b' in request.GET:
a = int(request.GET['a'])
b = int(request.GET['b'])
while a != b:
if a > b:
a = a - b
else:
b = b - a
c = a
return render_to_response('a.html',{'c':c})
return render_to_response('a.html')
Или же, можно им дать какое-то начальное значение, если это допустимо.