2016-02-11 2 views
2

Я делаю проект в каркасе пирамиды, поэтому у меня есть представление, в котором есть форма с двумя текстами типа ввода и кнопкой отправки.Передача данных между представлениями формы в Pyramid

Форма представляет собой метод почты, поэтому я получаю их с запросом POST.

Я хочу отправить их на новое представление и отобразить их на экране. смысл:

  • на 0.0.0.0:6543 является форма на первый взгляд.

  • Я хочу, чтобы отобразить значение вставки пользователя в входе на 0.0.0.0:6543/here

Я попытался с HTTPfound, но я думаю, IM недостающее понимание о том, как на самом деле передать переменные ,

Пожалуйста, помогите мне ...

+0

Возможный дубликат [Параметры формы прохождения между видами в Pyramid] (http://stackoverflow.com/questions/8409521/passing-form-parameters-between-views-in-pyramid) –

ответ

0

Другой способ передать данные из один взгляд на другой - через URL. В отличие от сеансов, это не требует поддержки на стороне сервера. Кроме того, это RESTful;)

return HTTPFound('/here?greeting=Hello&subject=World') 

В вашем втором окне вы затем просто получить переменные из request.GET:

greeting = request.GET.get('greeting', '') 
subject = request.GET.get('subject', '') 
# pass the data to the template 
return { 
    "greeting": greeting, 
    "subject": subject 
} 

Относительно комментарий: Вы не можете использовать HTTPFound с POST. Однако вы можете напрямую отправить форму на номер /here, используя <form method="post" action="/here" ...>. В этом случае вы сможете получить доступ к данным с помощью request.POST.get('greeting').

+0

Спасибо, Сергей, но я хочу, чтобы это исходило из метода POST, а не GET. Это возможно? –

+0

Я отредактировал свой ответ. Я бы не назвал это «передача данных между представлениями», хотя технически это то, что есть. – Sergey

0

Самый простой способ сделать это, чтобы использовать sessions.

  • Вы должны сессионный бэкенд, который хранит данные на сервере (см pyramid_redis_session). Существуют также сеансовые решения на основе файлов cookie, где все данные хранятся на стороне клиента.

  • Первый вид записывает все переданы данные к сессии:

    request.session["mydata"] = value 
    
  • Второй вид считывает данные из сессии

    print(request.session["mydata"]) 
    
+0

Спасибо, чувак. Это полезно :), но я тоже блуждал, если я могу успокоиться, чтобы второй взгляд получал его с POST –

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