# TIL 웹개발 - flask, request, form

![html작성 코드](https://upload.cafenono.com/image/slashpagePost/20240709/210813_7FeXQAtDI30MCyYsph?q=75&s=1280x180&t=outside&f=webp)

![html 구현](https://upload.cafenono.com/image/slashpagePost/20240709/211301_I7SQ99ds4KBnTVIFKc?q=75&s=1280x180&t=outside&f=webp)

먼저 html에서 form 형태를 작성한다.

**<form**** action:'/ 보낼 곳'**** ****method = '방식'****>**

- **action** : 어디로 보낼지 정하는 것이다. 파이썬에서 라우트하는 곳으로 설정한게 된다.

- **method** : form에서 지원하는 방식은 여러가지가 있는데 보통 get과 post를 사용한다.

    - get은 검색처럼 데이터를 요청할때 사용한다.

    - post는 로그인처럼 정보를 서버에 전달할 때 사용한다.

**<select ****name="요청 이름"**** — — —>
     <option ****value ="값"****></<option>**

 부트스트랩에서 사용한 셀렉트 방식으로 가위바위보를 골라서 제출하도록 했다.

- **name** : 파이썬이 요청 받을때 여기서 정해진 이름으로 데이터를 받는다.

- **value** : name이란 데이터의 값을 말한다.

예를 들어, 가위바위보 게임을 한다면 name은 내가 낼 패를 말하고 value는 가위, 바위, 보 처럼 선택한 값을 말한다.

**<input button ****type ='submit'****>**

버튼을 통해 제출되도록 설정했다.

![Image](https://upload.cafenono.com/image/slashpagePost/20240709/210734_rasJ4SWtudtBwproJx?q=75&s=1280x180&t=outside&f=webp)

라우트를 사용해 html의 데이터를 받는다. 

위에서 본 action 과 methods를 먼저 써준다.
methods는 html에서 post만 사용했는데 왜 둘 다 써야할까?

그 이유는,

> **사용자가 웹페이지를 처음 방문할 때 기본적으로 get 요청을 통해 페이지를 로딩한다. 따라서 get 메서드를 포함하지 않으면 로딩시 오류가 생길수 있다.**

get을 사용하지 않더라도 꼭 둘 다 써야함을 기억하자!

**user_choice = request.form['user_choice']** 로 name과 같은 값을 통해 value값을 매개변수(user_choice 앞에 거)에 지정한다.

이렇게 하면 form은 정상적으로 작동한다.

For the site tree, see the [root Markdown](https://slashpage.com/kyugntae-ai.md).
