UnboundLocalError: локальная переменная 'currency' упоминается перед присвоением Django

Здесь много вопросов с подобной ошибкой, но не могу найти конкретное решение для моего случая.

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

FORM

class CurrencyForm(forms.Form):
    currency = forms.ChoiceField(initial=('USD', 'USD'), choices=['USD', 'AUD', 'GBP' 'CAD'], label='Choose Currency:')

VIEW

class MyDashboardView(TemplateView):
    template_name = 'coinprices/my-dashboard.html'

    def get(self, request, **kwargs):
        form_c = CurrencyForm(prefix='form_c')
        return render(request, self.template_name, {
            'form_c': form_c,
        })

    def post(self, request):

        form_c = CurrencyForm(request.POST, prefix='form_c')

        if request.method == 'POST':
            if form_c.is_valid():
                currency = form_c.cleaned_data['currency']
        
        rates = {'USD': 1.0, 'AUD': 1.321, 'GBP': 0.764, 'CAD': 1.249}

        deposit = 10000 / rates[currency]

        context = {
            'deposit': deposit
        }

        return render(request, 'coinprices/my-dashboard.html', context)

HTML

        <span>
        <form method="post">
            {% csrf_token %}
            {{ form_c.as_p }}
            <button class="btn btn-outline-success btn-sm">Submit</button>
        </form>
        </span>
Traceback (most recent call last):
  File "", line 55, in inner
    response = get_response(request)
  File "", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "", line 84, in view
    return self.dispatch(request, *args, **kwargs)
  File "", line 119, in dispatch
    return handler(request, *args, **kwargs)
  File "", line 245, in post
    deposit = 10000 / rates['currency']
UnboundLocalError: local variable 'currency' referenced before assignment
Вернуться на верх