WEB2 - Python

활용 - 생성 구현 2 - 전송한 정보의 처리

수업소개

html form을 이용해서 전송한 데이터를 Python 애플리케이션이 받아서 처리하는 방법을 소개합니다. 

 

 

강의

 

 

 

소스코드

process_create.py

#!/usr/local/bin/python3

import cgi
form = cgi.FieldStorage()
title = form["title"].value
description = form['description'].value

opened_file = open('data/'+title, 'w')
opened_file.write(description)
opened_file.close()

#Redirection
print("Location: index.py?id="+title)
print()

 

댓글

댓글 본문
작성자
비밀번호
  1. Sungwoong Pyeon
    해결했습니다 정말 감사합니다. 핵심 키는
    <form enctype="multipart/form-data" action="process_create.py" method="post">
    enctype="multipart/form-data" 이거 였습니다.
    다시 한번 답변 감사합니다.
    대화보기
    • egoing
      아래와 같이 검색을 해보니 몇몇 사례들이 보이네요.
      https://www.google.co.kr......F-8

      참고해보셔요~
      대화보기
      • Sungwoong Pyeon
        제가 <p><input type="file" name="pic" accept="image/*"></p> 위에서 설명해주신 방법으로 이미지도 추가해보려고 합니다. images directory 아래에 이미지 이름으로 파일생성은 됩니다. 하지만 이미지는 저장되지 않네요.
        예를들어 nodejs.jpg로 파일생성은 되는데 파일을 클릭해보면 사진은 없습니다. 조언 부탁드립니다.
      • 넵 답변 감사합니다~
        대화보기
        • egoing
          아래 주소를 보시면 전송된 폼의 정보를 확인하는 방법이 있습니다. 이걸 보시고 제대로 폼이 전송 되었는지 확인해보셔요

          https://wpscholar.com......me/
          대화보기
          • 넵 확인 했습니당~
            (크롬) 개발자 도구의 Network 탭의 내용에서는 별도의 에러 메세지는 없습니다.
            다만 에디션(VS code)에서 코드 실행 시 "process_create.py"의 title = form['title'].value
            라인에서 KeyErro메세지를 확인 할수 있었습니다...

            에러 메세지는 다음과 같습니다.
            Traceback (most recent call last):
            File "d:\Bitnami\wampstack-7.1.18-1\apache2\htdocs\Syntex\process_create.py", line 7, in <module>
            title = form['title'].value
            File "D:\python-3.7.0\lib\cgi.py", line 527, in __getitem__
            raise KeyError(key)
            KeyError: 'title'
            제가 해석하기에는 ..
            "creat.py"의 form문의 title 값을 불러오지 못하는것 같은데...
            어떻게 해결해야 할지를 모르겠습니다...
            https://github.com......ect

            코드 한번 봐주시면 감사 하겠습니다!
            도와 주세욤!!!
            수업 항상 감사히 듣고 있습니다.
            대화보기
            • egoing
              (크롬) 개발자 도구의 Network 탭의 내용을 모니터링 해보셨는지요?
              대화보기
              • 문의 드립니다.
                현재 Win10에서 수업을 잘 따라하고 있습니다.
                마지막 Redirection 부분에서 동일하게 코드 작성하면 HTML에서 해당 페이지로 이동 안되고 그대로 출력 됩니다~

                어떻게 해결 해야 할까요?
              • ChoeDoby
                저도 그 에러가 나서 한번 에러로그를 찾아보았는데요, 에러로그에 보면
                Premature end of script headers라고 되어있습니다. 이걸 구글링 해보면
                HTTP header와 body 사이에는 적어도 하나는 필요하다고 되어있는데
                index.py와 create.py에는 그 사이에 이미 공백이 존재했고,
                process_create.py 파일에서는 다른 바디부분이 존재하지 않기 때문에 print()를 통해
                공백을 추가해 줘야 했던 것 같습니다.
                대화보기
                • daengdaengLee
                  codeanywhere에서 실습하는 중 에러가 나는 부분 공유합니다.

                  data 디렉토리에 대해 apache 서버에서 쓰기 권한이 없어서 Permission denied 에러가 발생합니다.
                  해당 디렉토리의 권한 설정을 바꿔주면 동작합니다.

                  // workspace 디렉토리에서
                  $ sudo chgrp www-data ./data
                  $ sudo chmod g+rwx ./data

                  실행시키면 정상 동작합니다.

                  자세한 내용, 원리를 아시는 분은 댓글로 내용을 추가해주세요 :)
                • SongSong
                  안녕하세요
                  index.py 와 create.py 에서는 print()를 붙이지 않아도 전혀문제없었는데

                  현재 파일(process_create.py) 에서만 마지막에 print() 이부분을 빼면 에러가 발생하네요

                  저 부분이 어떤 의미를 가지길래 위와같은 차이가 존재하는지 궁금합니다!!!
                • 초보개발자
                  open 함수 관련해서 한글 utf-8 문제는

                  import codecs

                  opened_file=codecs.open('data/'+title,'w','utf-8')

                  이런식으로 open 함수 앞에 codecs. 붙여주고 인자로 'utf-8' 적어주니까 한글 안깨지네요!
                • quantico
                  코드애니웨어에서 form전송을 하면 (104)Connection reset by peer
                  AH02550: Failed to flush CGI outputto client, referer
                  위와 같은 에러가 납니다. 도와주세요
                버전 관리
                egoing
                현재 버전
                선택 버전
                graphittie 자세히 보기