Помощь с Python в Интернете - PullRequest
       35

Помощь с Python в Интернете

0 голосов
/ 19 сентября 2009

Я использовал Werkzeug для создания приложений, совместимых с WSGI. Я пытаюсь изменить код на первой странице.

Его основная идея заключается в том, что вы переходите на URL / hello и получаете «Hello World!» сообщение. Вы идете в / привет / и вы получаете "привет!" Например, / hello / jeff выдает «Hello Jeff!». В любом случае, я пытаюсь разместить на первой странице форму с текстовым полем, где вы можете ввести свое имя, и она отправит ее в / hello Поэтому, если вы введете «Джефф» в форму и отправите заявку, вы получите «Привет Джефф!» сообщение.

Однако я понятия не имею, как это сделать. Мне нужно передать переменную "name" в шаблон hello, но я не знаю как. Вот мой index.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Index page</title>
</head>

<body>
<h1>Go to the <a href="${url_for('say_hello')}">default</a></h1>
<form name="helloform" action="${url_for('say_hello')}" method="post">
<input type="text" name="name">
<input type="submit">
</form>
</body>
</html>

method = "get" тоже не работает, как и ожидалось.

Ответы [ 4 ]

1 голос
/ 19 сентября 2009

Сделайте это правильно: перейдите к /hello?name=joe, чтобы поздороваться с Джо и так далее. Вот как HTML / HTTP предназначен для работы! Ваш код, стоящий за URL-адресом /hello, просто должен получить параметр name из запроса, если он есть, и ответить соответствующим образом.

0 голосов
/ 19 сентября 2009

HTML-формы имеют статический целевой адрес action="/something", но вы хотите изменить адрес в зависимости от ввода пользователя . У вас есть два варианта:

  1. Добавьте JavaScript в HTML-форму изменить целевой адрес (по добавление имени) перед формой представлен.

  2. Напишите новый метод в вашей веб-среде, который читает GET или POST переменные и укажите там форму.

0 голосов
/ 19 сентября 2009

HTML основан на принципе REST ... каждый URL должен быть объектом, подобным человеку; НЕ действие, как сказать привет человеку. Сделайте так, чтобы URL определял, кого вы хотите приветствовать, только если ваше веб-приложение знает, кто это внутри, просматривая свою базу данных.

Если в вашем веб-приложении нет объекта под названием Joe, то создание URL-адресов с использованием Joe не является правильным подходом. Ваше конкретное веб-приложение предназначено для того, чтобы узнать, кто эти люди, и отправить им приветственные сообщения. Таким образом, у вас, вероятно, должен быть один URL: / greeter, который ищет информацию, отправленную в запросах GET или POST (из вашей формы), и отображает приветствие. Если он не знает, кого приветствовать, он может отобразить форму, чтобы узнать.

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

0 голосов
/ 19 сентября 2009

Непосредственно на странице ссылки, которую вы предоставляете (http://werkzeug.pocoo.org/) при нажатии на «Нажмите здесь», вы получите код для примера «Привет X». Похоже, что вам не хватает:

Hello ${url_values['name']|h}!

где-то в вашем html-шаблоне (при условии, что это шаблон как для ответа, так и для запроса)

...