Implementar chartit en Django 1.6 con Python 2.7 – TypeError: ‘NoneType’ no tiene ningún atributo __getitem__

He implementado con éxito algunas aplicaciones en Django. En este momento, trato de implementar un gráfico de acuerdo con el tutorial: http://chartit.shutupandship.com/docs/#how-to-use .

Pero solo recibo este mensaje de error:

Exception Value: 'NoneType' object has no attribute '__getitem__' Exception Location: /home/administrator/virtualenvs/django27/lib/python2.7/site-packages/chartit/templatetags/chartit.py in load_charts, line 68 

El error aparece en esta línea: hco [‘chart’] [‘renderTo’] = render_to

¿Indica el error que render_to no es un dict?

modelos.py:

 Class MonthlyWeatherByCity(models.Model): month = models.IntegerField() boston_temp = models.DecimalField(max_digits=5, decimal_places=1) houston_temp = models.DecimalField(max_digits=5, decimal_places=1) 

views.py:

 def weather_chart_view(request): #Step 1: Create a DataPool with the data we want to retrieve. weatherdata = \ DataPool( series= [{'options': { 'source': MonthlyWeatherByCity.objects.all()}, 'terms': [ 'month', 'houston_temp', 'boston_temp']} ]) #Step 2: Create the Chart object cht = Chart( datasource = weatherdata, series_options = [{'options':{ 'type': 'line', 'stacking': False}, 'terms':{ 'month': [ 'boston_temp', 'houston_temp'] }}], chart_options = {'title': { 'text': 'Weather Data of Boston and Houston'}, 'xAxis': { 'title': { 'text': 'Month number'}}}) 

Incluí los archivos de script, el {{bloque de carga}} en las plantillas …

 
{{ weatherchart|load_charts:"container" }}

Pero eso es, en mi opinión, no el problema.

¿Cómo puedo arreglarlo? ¡Gracias!

Intente y mueva la línea {{ weatherchart|load_charts:"container" }} fuera del div con el container id en el header , como lo hace el ejemplo .

Debes modificar el archivo de plantilla de la siguiente manera:

   {% load chartit %} {{ weatherchart|load_charts:"container" }} 
{{ weatherchart|load_charts:"container" }}

Después de perder un buen tiempo, creo que la solución es hacer que la clave del diccionario devuelta por su ‘vista’ coincida con lo que tiene en su archivo html de plantilla. Por ejemplo,

  def weather_view(request): # other codes return render_to_response('charts/graph.html', {'weatherchart': cht}) 

entonces su plantilla html sigue el formato anterior:

  
{{ weatherchart|load_charts:"container" }}

También asegúrese de instalar simplejson en su virtualenv usando: pip install simplejson