[Django] 요청과 응답(form)

    HTML Form

    : HTTP 요청을 서버에 보내는 가장 편리한 방법 (ex: 로그인 창)

    • 사용자로부터 할당된 데이터를 서버로 전송
    • 웹에서 사용자 정보를 입력하는 여러 방식(text, password, checkbox 등)을 제공

     

    <form action="" method="GET">
        <label for="message">검색어:</label>
        <input type="text" name="query" id="message"> 
        <input type="submit">
    </form>

    # Input의 요소

    <input type="text" name="query" id="message">

    type = 역할

    name = input의 핵심 속성 / 서버로 보내는 key의 역할

    id = label이 붙을 위치를 정해줌

     

    여기서, form의 핵심 속성은 "데이터를 어디(action)로 어떤 방식(method)으로 요청할 건지?" 인데

    그것을 담당하는 것이 input의 name이다.

    => Query String Parameter을 이용하기 위한 방식

     

     

    Query String Parameter

    • 사용자의 입력 데이터를 URL 주소에 파라미터를 통해 서버로 보내는 방법
    • 문자열은 앰퍼샌드(&)로 연결된 key = value 쌍으로 구성되며, 기본 URL과 물음표(?)로 구분됨
    • 예시: http://host:port/path?key=value&key=value (GET방식)
    • GET방식과 POST방식의 차이: 보안성(GET < POST), POST방식은 주로 로그인 창 같이 보안이 중요한 곳에 사용된다.

    예를 들어, 네이버 검색창에서 검색을 했을 때 검색 결과의 주소를 보면 일정한 형식을 가진다.

    https://search.naver.com/search.naver/?query=야구

    'https://search.naver.com/search.naver/'은 고정이고, ?query='검색어'의 형식을 가진다.

    여기서 query는 사이트마다 각자 다른 key값인데, 이 값이 input의 name에 들어간다.

    + 앞에 들어가는 'https://search.naver.com/search.naver/'는 form의 action 항목에 들어가면 된다.

     

     

     


    네이버 만들기 실습

     

     

    1. views.py에 search함수를 추가해 준다.

     

     

    2. search.html 파일을 만든 후, base.html을 부모 템플릿으로 지정하고 form을 다음과 같이 추가해 준다.

     

     

    3. 저장 후, 서버에서 서버주소/search를 입력해 결과를 확인한다.

     

     

    검색창에 검색어를 입력하면 네이버 검색으로 넘어간다.

     

     

    'BackEnd > Django' 카테고리의 다른 글

    [Django] 변수와 URL  (0) 2023.09.14
    [Django] form활용: throw & catch  (0) 2023.09.13
    [Django] Template 상속  (0) 2023.09.13
    [Django] Template System  (0) 2023.09.13
    [Django] MTV 디자인 패턴  (0) 2023.09.12

    댓글