Разработка Django - как правильно получить доступ к результатам модели - PullRequest
0 голосов
/ 01 апреля 2011

Хорошо, прости меня, если это небольшой вопрос, но я не могу найти пример в Интернете. Я PHP-разработчик, конвертирующий в Django из Codeigniter. Я называю модель, которую я сделал так:

if request.method == 'GET':
    for e in Ratecard.objects.filter(reportSuite=region):
        suite = e.reportSuite
        RP_UniqueUsers = e.RP_UniqueUsers
        RP_PageImpressions = e.RP_PageImpressions
        RP_TimeSpent = e.RP_TimeSpent
        RP_PageViewPerVisit = e.RP_PageViewPerVisit
        HP_PageImpressions = e.HP_PageImpressions
        HP_UniqueUsers = e.HP_UniqueUsers
        HP_TimeSpent = e.HP_TimeSpents



return render_to_response('rates.html', locals())

В этом примере 'region' устанавливается из параметра GET. Моя проблема в том, что если я тогда пытаюсь получить доступ к пакету из моего шаблона, я ничего не получаю из него. {{region}} не печатает никаких результатов.

Как правильно получить доступ к этим данным как в представлении, так и в шаблоне?

1 Ответ

2 голосов
/ 01 апреля 2011

Ваши локальные переменные просмотра не видны в ваших шаблонах по умолчанию.Вы должны передать их явно в контекстном словаре.Обычно вы делаете это в render_to_response.

Пример:

def index(request):
    # a local variable
    region = "sanriku"

    # render_to_response takes a template file name as the first argument
    # and optionally some more parameters, such as a context dictionary,
    # that holds your variables, which will be accessible in this view.
    # Here, e.g. the variable {{ region }} will be accessible and will print 
    # just "sanriku".
    return render_to_response("index.html", {"region" : region})

В Django 1.3 появился новый ярлык render:

render () аналогичен вызову render_to_response () с аргументом context_instance, который вызывает использование RequestContext.

Ярлык для любого параметра запроса GETбыть:

{{ request.GET.q }} 

, если у вас включен обработчик контекста запроса .

Только для целей разработки: если вы хотите сохранить некоторые нажатия клавиш во время разработки, вы можете добавитьвсе локальные переменные одновременно с помощью функции locals(), которая возвращает словарь, представляющий текущую таблицу локальных символов .Таким образом, самый плотный способ получить доступ ко всем локальным переменным в вашем шаблоне, а также ко всем данным, которые содержит RequestContext , вы можете написать:

# Django 1.3
return render("template.html", **locals())

# Pre Django 1.3
return render("template.html", **locals(),
    context_instance=RequestContext(request))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...