Вопрос

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

Его основная идея заключается в том, что вы переходите по URL-адресу / hello и получаете сообщение "Привет, мир!".Вы заходите в /hello/ и получаете "привет!".Например, /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", как и следовало ожидать, тоже не работает.

Это было полезно?

Решение

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

Другие советы

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

  1. Добавьте javascript в html-форму, чтобы изменить целевой адрес (путем добавления имени) перед отправкой формы .

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top