2015-05-24 2 views
0

У меня есть этот код, но он не работает, когда я пытаюсь поставить a в контекстном режиме. Я новичок в этом. Большое спасибо за Вашу помощь!Как добавить переменную в контексте представлений DJANGO?

from django.shortcuts import render, render_to_response, RequestContext 
import csv 

a = [] 
with open('test.csv', 'rb') as csvfile: 
    spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|') 
    for row in spamreader: 
     a.append(row) 

def home (request): 
    return render_to_response("home.html", locals(), context_instance=RequestContext(request)) 
+1

Все, что должно быть внутри домашней функции. –

+0

Поверхность не работает, она показывает: unindent не соответствует внешнему уровню отступа. – sj2001

+0

Затем вам нужно исправить отступы. Это основное требование Python. –

ответ

0

Проблема заключается в том, что a это имя в глобальной области видимости и, следовательно, не является частью locals(). Вместо locals() явно передайте аргументы, необходимые для шаблона (например, a).

1

Об идентификации, вам нужно использовать 4 пробела для программирования Python.

Попробуйте это:

from django.shortcuts import render, render_to_response, RequestContext 
import csv 

def get_data(): 
    with open('test.csv', 'rb') as csvfile: 
     a = [] 
     spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|') 
     for row in spamreader: 
      a.append(row) 
     return {'csvdata': a} 

def home(request): 
    return render_to_response('home.html', get_data(), context_instance=RequestContext(request)) 

Тогда вы должны быть в состоянии назвать a с csvdata именем в шаблоне.

+0

Спасибо за указание – Gocht

0
from django.shortcuts import render, render_to_response, RequestContext 
import csv 

def home(request): 
    with data as csv.reader(open('myfile.csv', 'r'), delimiter=','): 
     return render_to_response('home.html', {'data': data}, context_instance=RequestContext) 

data в коде, я написал должен содержать список строк.

Смежные вопросы