2015-11-13 1 views
1

J'ai essayé de déboguer ce problème, mais je n'arrive pas à le comprendre. Lors du débogage, je peux voir que toutes les variables sont là où elles devraient être, mais je n'arrive pas à les sortir.Objet Python Django Dict non appelable

Lors de l'exécution je reçois le message d'erreur 'dict' object is not callable

Ceci est le message d'erreur complet de Django

Environment: 


Request Method: GET 
Request URL: http://127.0.0.1:8000/?form_base_currency=7&form_counter_currency=14&form_base_amount=127 

Django Version: 1.8.6 
Python Version: 3.4.3 
Installed Applications: 
['django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'client'] 
Installed Middleware: 
['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'] 


Traceback: 
File "/home/johan/sdp/currency-converter/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response 
    132.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/home/johan/sdp/currency-converter/currency_converter/client/views.py" in index 
    22.    form_base_currency = form.cleaned_data('form_base_currency').currency_code 

Exception Type: TypeError at/
Exception Value: 'dict' object is not callable 

Pour plus de clarté, j'ai ajouté une capture d'écran à partir des variables du débogueur. enter image description here

Voici le code que j'utilise:

if request.method == 'GET': 
    form = CurrencyConverterForm(request.GET) 
    if form.is_valid(): 
     form_base_currency = form.cleaned_data('form_base_currency').currency_code 
     form_counter_currency = form.cleaned_data('form_counter_currency') 
     form_base_amount = form.data.cleaned_data('form_base_amount') 

Pour obtenir le fonctionnement form_base_currency J'ai essayé ces méthodes différentes:

form_base_currency = form.cleaned_data('form_base_currency').currency_code 
form_base_currency = form.cleaned_data.form_base_currency.currency_code 
form_base_currency = form.cleaned_data('form_base_currency.currency_code') 

Aucun d'entre eux travaillent. Quelqu'un pourrait-il me dire comment je peux résoudre cela?

Répondre

8

dictionnaires ont besoin crochets

form_counter_currency = form.cleaned_data['form_counter_currency'] 

bien que vous pouvez utiliser get de sorte que vous pouvez fournir une valeur par défaut

form_counter_currency = form.cleaned_data.get('form_counter_currency', None) 
+1

Merci beaucoup pour votre aide. –

+0

@JohanVergeer - Pas de soucis, profitez-en! – Sayse