Передача переменных между представлениями - PullRequest
0 голосов
/ 01 октября 2010

У меня есть два представления:

def importContent(request):    
    d = get_some_data()
    t = get_template('import.html')
    c = Context({'entries' : d.entries })

    return HttpResponse(t.render(c))

def doImport(request):
    return HttpResponse("hey")

Вот import.html:

{% for entry in entries %} 
    {{ entry.title}} <br> 
{% endfor %}

<a href="/do_import">soo</a>

Пользователь открывает представление importContent () и нажимает ссылку, которая открывает представление doImport (),Как передать d-переменную из представления importContent () в представление doImport ()?

Ответы [ 2 ]

2 голосов
/ 01 октября 2010

Я могу придумать пару способов подойти к этому.

Первый требует, чтобы у вас был включен sessions.В этом механизме первое представление сохранит переменную в сеансе пользователя, а второе извлечет ее.Например,

def importContent(request):    
    d = get_some_data()
    t = get_template('import.html')
    c = Context({'entries' : d.entries })
    request.session['entries'] = d
    return HttpResponse(t.render(c))

def doImport(request):
    if 'entries' in request.session:
        d = request.session['entries']
    else:
        d =  # Perform a look up or show a message etc.
    return HttpResponse("hey")

Сессия также может быть заменена настраиваемым кешем.

Второй - заставить второй явно просматривать данные.Это проще, если данные ограничены и не требуют больших вычислений.

1 голос
/ 01 октября 2010

Если вы хотите передать все записи обратно в doImport, это будет непросто.Способ передачи параметров в запросе - это поместить их в URL, использовать пост-запрос или использовать сеанс, но это требует больше работы.

Использование URL-адреса не очень удобно, так как будет много параметровэтот URL.

Использование сообщения является странным и не подходит для ссылки HTML.

Использование сеанса требует проверки подлинности и использования пользователей.

Не можете ли выпросто позвоните:

d = get_some_data()

в doImport снова?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...