[210616 TIL - (2)] Python

Choi Rim·2021년 6월 16일
0

Python

목록 보기
4/20
post-thumbnail

form

사용자로부터 정보를 입력받는 양식

<p><input type="text" name="title" placeholder="title"></p>
<p><textarea name="description" placeholder="description"></textarea></p>
<p><input type="submit"></p>

  • input type을 설정해 텍스트를 입력하는 창을 만들 수 있다.
  • placeholder에는 텍스트창에 텍스트를 입력하기 전의 상태에 나타낼 글자를 입력할 수 있다.
  • name="title"은 서버로 전송될 때 텍스트창에 입력한 정보를 title이라는 이름으로 전송하겠다는 뜻.
    <form action="process_create.py">
        <p><input type="text" name="title" placeholder="title"></p>
        <p><textarea rows="4" name="description" placeholder="description"></textarea></p>
        <p><input type="submit"></p>
    </form>
  • form태그에 action 속성으로 input값을 보낼 주소를 적으면 input 텍스트창에 입력한 정보가 그 주소로 전송된다.
    ex) /process_create.py?title=CGI&description=CGI+is+...
    => title에 CGI, description에 CGI is...를 입력했을때의 주소
<form action="process_create.py" method="post">
  • method를 설정하지 않으면 자동으로 GET방식으로 method가 설정된다.
  • method를 POST 방식으로 설정해 주었다.

HTTP method

HTTP 메서드는 서버에 클라이언트가 요청을 보내는 방법이다. HTTP의 메서드 종류에는 GET, POST, PUT, PATCH, DELETE등이 있다.

  • GET
    정보를 가져오기 위한 요청

  • POST
    정보를 작성하기 위한 요청

전송한 정보 처리

#!/usr/bin/python3
print("Content-Type: text/html")
print()

import cgi
form = cgi.FieldStorage()
title = form["title"].value
description = form["description"].value
print(title, description)
opened_file = open('data/'+title, 'w')
opened_file.write(description)

CGI CGI is ...

  • form이 정보를 보내기로 한 파일 process_create.py에 위 내용르 넣는다.
  • title에 입력한 내용이 title이 되고 description에 입력한 내용은 description이 된다.
  • opened_file = open('data/'+title, 'w')
    opened_file.write(description)

    data/+title에 파일이 쓰기 형식으로 만들어지고 description에 해당되는 값이 'data/'+title에 해당하는 파일에 쓰기가 된다.
  • 여기서 파일이 data 디렉토리에 추가가 되지 않았는데 chmod 777 data를 이용해 디렉토리의 폴더 권한을 모든사용자가 쓰기, 읽기, 실행 가능하도록 바꿔주면 잘 실행된다 .
    유튜브 댓글님 감사합니다.

Redirection

print("Location: index.py?id="+title)
print()
  • 사용자를 웹 서버가 지정한 페이지로 보내버리는 헤더
  • 사용자가 title을 입력하면 id값을 title로 받아 그 페이지로 이동하게 됨

<참고>

profile
https://rimi0108.github.io/

0개의 댓글