문제

나는 사용하고있다 Werkzeug WSGI를 준수하는 응용 프로그램을 만들기 위해. 첫 페이지에서 코드를 수정하려고합니다.

그것의 기본 아이디어는 당신이 /안녕하세요 URL로 가서 "Hello World!"를 얻는다는 것입니다. 메시지. 당신은 / 안녕하세요 / 그리고 당신은 "안녕하세요!"를 얻습니다. 예를 들어, /hello /jeff는 "hello jeff!"를 생산합니다. 어쨌든, 내가하려고하는 것은 첫 페이지에 이름을 입력 할 수있는 텍스트 상자와 함께 양식을 놓는 것입니다. 양식에 "Jeff"를 입력하고 제출하면 "Hello Jeff!" 메시지.

그러나 나는 이것을하는 방법을 모른다. "이름"변수를 Hello Template에 전달해야하지만 방법을 모르겠습니다. 내 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>

메소드 = "get"도 작동하지 않습니다.

도움이 되었습니까?

해결책

올바른 방법으로하십시오 : 가십시오 /hello?name=joe Joe에게 인사하는 것 등. 그것이 HTML/HTTP의 방식입니다 설계 일하다! 당신의 코드 뒤에 /hello URL은 그냥 얻기 만하면됩니다 name 요청의 매개 변수, 존재하는 경우, 그에 따라 응답합니다.

다른 팁

HTML 양식에는 정적 대상 주소가 있으며 action="/something", 그러나 당신은 원합니다 사용자 입력에 따라 주소를 변경하십시오. 두 가지 옵션이 있습니다.

  1. 양식이 제출되기 전에 대상 주소를 변경하여 HTML 양식에 JavaScript를 추가하십시오.

  2. 웹 프레임 워크에 변수를 읽거나 게시하고 양식을 가리키는 새로운 메소드를 작성하십시오.

제공하는 페이지 링크에 직접 (http://werkzeug.pocoo.org/) '여기를 클릭하십시오'를 클릭하면 hello x 예제에 대한 코드가 나타납니다. 당신이 놓치고있는 것 같습니다 :

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

HTML 템플릿 어딘가에 (요청뿐만 아니라 응답 및 요청을위한 템플릿이라고 가정)

HTML은 나머지 원리를 기반으로합니다 ... 각 URL은 사람과 같은 객체 여야합니다. 사람에게 인사하는 것과 같은 행동이 아닙니다. URL이 데이터베이스를 보면서 웹 애플리케이션이 내부적으로 누구인지 알고있는 경우에만 인사하고 싶은 사람을 식별하도록하십시오.

WebApplication에 Joe라는 객체가 없으면 Joe가있는 URL을 설계하는 것은 올바른 접근법이 아닙니다. 귀하의 특정 웹 응용 프로그램은 사람들이 누구인지 알아 내고 헬로 메시지를 보내는 것입니다. 따라서, 당신은 아마도 하나의 url : /greeter가 있어야하는데, 그것은 당신의 양식에서 get 또는 post 요청에 전송 된 정보를 찾고, 인사말을 표시해야합니다. 누가 인사 해야하는지 모르면 찾아 볼 양식을 표시 할 수 있습니다.

소프트웨어를 구축 할 때 실제로 작업하는 객체 (시스템을 구성하는 구성 요소)의 관점에서 항상 생각하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top