WEB2 - Python

활용 - URL query string을 가져오는 방법

수업소개

URL의 query string을 입력 값으로 웹애플리케이션으로 끌어오는 방법을 소개합니다. 

 

 

강의

이 수업의 예제에서는 접속 URL에 ?id가 포함되어 있어야 오류없이 동작합니다. 

 

 

소스코드

index.py

변경사항

#!/usr/local/bin/python3
print("Content-Type: text/html")
print()
import cgi
form = cgi.FieldStorage()
pageId = form["id"].value
print('''<!doctype html>
<html>
<head>
  <title>WEB1 - Welcome</title>
  <meta charset="utf-8">
</head>
<body>
  <h1><a href="index.py">WEB</a></h1>
  <ol>
    <li><a href="index.py?id=HTML">HTML</a></li>
    <li><a href="index.py?id=CSS">CSS</a></li>
    <li><a href="index.py?id=JavaScript">JavaScript</a></li>
  </ol>
  <h2>{title}</h2>
  <p>The World Wide Web (abbreviated WWW or the Web) is an information space where documents and other web resources are identified by Uniform Resource Locators (URLs), interlinked by hypertext links, and can be accessed via the Internet.[1] English scientist Tim Berners-Lee invented the World Wide Web in 1989. He wrote the first web browser computer program in 1990 while employed at CERN in Switzerland.[2][3] The Web browser was released outside of CERN in 1991, first to other research institutions starting in January 1991 and to the general public on the Internet in August 1991.
  </p>
</body>
</html>
'''.format(title=pageId))

 

댓글

댓글 본문
  1. 최정우
    windows 환경에서 지속적으로 cgi 에러가 발생해서 macOS에서 실행해보니 양호합니다
  2. scientist
    큰 도움 됐습니다!
    대화보기
    • scientist
      220729
    • CGI 모듈로 query string (or URL parameter)를 받아오기
      아직 id 값을 받아오는 게 무슨 장점이 있는지 모르겠으나 공부하다보면 알게될거라 믿고 진행
    • Seunggwang Baek
      강의에서 <a href="1.html">을 <a href="index.py?id=HTML">로 변경할 때
      왼쪽은 1.html파일을 읽는다고 생각하면 이해가 가는데 오른쪽처럼 변경하면 어떤 파일을 읽는 컴퓨터가 어떻게 이해하나요?
      ""안에 파일 이름을 입력해야하는거 아닌가요?
    • 윤재승
      아주아주좋아요!
    • labis98
      2022.02.20 좋은 강의 한번 더 들어요~~~!
    • pmxsg
      2022.02.04
    • labis98
      20220105 좋은 강의 감사합니다~~~!
    • 2021.09.10 완료
    • 조민영
      저도 Style Tag삭제하니 일단은 작동 잘하네요..
      왜 Style tag가 문제되는지는 고민해 봐야겠지만요 ㅠㅠ
      대화보기
      • 초딩 개발자
        2021/05/09
      • jeisyoon
        2021.04.08 URL query string 가져오는 법 - OK
      • 이수완
        헐,.. 감사합니다..
        대화보기
        • Americano
          21.03.02
        • younghwani
          완료!
        • 박민지
          2021.01.11
        • hksap
          210101
        • 하양색
          이전에 구글 애널리틱스를 넣으니 아마 시스템상으로 충돌이나 밴같은게 있었던것 같습니다. 우선 진도를 진행해보지만 나중에는 이것을 다시 넣기위해 한번 사투를 가져봐야 할것 같습니다.
        • park
          2020.10.12
        • dagel0102
          20.10.09
        • cgoing
          cgoing / 2020.10.02
        • jiyeong
          2020.09.01.
        • 늦깍이 개발자
          form["id"].value ==> form.getvalue("id") 로 변경 해서 해보세요
        • 김태풍
          경로문제라 함은 어떤걸 말씀하시는지 알 수 있을까요?ㅠㅠ
          대화보기
          • 엄세환
            경로문제 같은데요?
            대화보기
            • 김태풍
              안녕하세요 아랫분들과 같이 index.py 페이지에서 하얀 페이지만 보여서 댓글 남깁니다.
              저는 아래와 같은 에러로그가 나왔는데 구글링을 해도 도저히 찾을 수가 없더라고요 ㅜㅜ
              혹시 아시는 분 있으면 도움 주심면 감사하겠습니다....!

              print("""\r: C:/Bitnami/wampstack-7.4.8-0/apache2/htdocs/index.py
              ValueError: unexpected '{' in field name\r: C:/Bitnami/wampstack-7.4.8-0/apache2/htdocs/index.py
            • OneJae EE
              20.05.02 토 / 37세 비전공자 / 완료
            • Mocha
              이전 비디오 부터는 어렵네요...
            • 말룩얼
              if "id" in form:
              pageId = form["id"].value

              이부분 추가하면 되긴 됩니다.
              그런데 제대로 들여쓰기 해주셔야 동작하네요!

              if "id" in form:pageId = form["id"].value

              이렇게 붙여쓰시던지
              if "id" in form:
              pageId = form["id"].value
              이렇게 들여써주셔야 됩니다.

              파이썬은 space 공백이랑, tap 공백도 민감하게 반응하기 때문에
              자칫 syntax error 발생할 수도 있거든요!
              대화보기
              • 스티븐잡숴
                완료
              • spam
                저는 맥을 쓰고 있는데 한글로 써도 정상적으로 작동해요!
                대화보기
                • easyBAMM
                  import cgi
                  form = cgi.FieldStorage()
                  pageId = "WEB"
                  if "id" in form:
                  pageId = form["id"].value

                  이런 식으로 하면 해결이 되는 거 같아요!
                  pageId를 id가 없으면 그냥 WEB으로 id가 있으면 id의 값으로 설정하는 코드입니다.
                  활용-조건에 반응하는 앱 만들기 편을 보시면 됩니다!
                  대화보기
                  • apldeap
                    12/25
                  • 보는이
                    .format 하얀화면 때문에 막히네요
                  • xuanxi
                    20191125
                  • 쑤우
                    수강완료. 감사합니다.
                  • 굼벵이
                    완료
                  • 20191003 Ted 완료!
                  • 공부중
                    아 너무 감사합니다 ^^
                    대화보기
                    • 김영인
                      강의대로 따라가다가 하얀화면이 계속되어서 맨붕중인데요,
                      저는 맥북으로 수업진행중이고, 파이선 3.7버전을 사용중입니다.

                      format을 쓰자마자 오류가 났습니다.
                      keyError: "pageLayer" 라는 오류코드가 떠서 검색해봐도 pageLayer 관련 글은 없더라구요,
                      그래서 댓글에 나와있는데로 web1수업때 추가했던 구글 애널리틱스와 댓글기능 관련 코드를 지우니 그건 해결 되었습니다.

                      그 후 다시 수업을 따라서 진행을 했는데,
                      import cgi
                      form = cgi.FieldStorage()
                      pageId = form["id"].value
                      위 태그를 넣으니 또 에러가 나네요 ㅠㅠ

                      Traceback (most recent call last):
                      File "/Applications/mampstack-7.3.7-0/apache2/htdocs/WEB2-Python/index.py", line 6, in <module>
                      pageId = form["id"].value
                      File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/cgi.py", line 534, in __getitem__
                      raise KeyError(key)
                      KeyError: 'id'

                      에러코드 내용을 보면 파이썬 3.7 버전과도 관련있어 보이는데, 어쩌면 좋을까요?ㅠㅠ
                      index.py에 id값을 넣어줘도 안되네요
                      (이고잉님께서 수업때 사용하신 index.py를 그대로 복사해서 사용해도 똑같은 에러가 납니다.)

                      (19. 7. 23. 수정)
                      하루종일 해결해 보려다가 포기하고 다음 강의를 계속 보니까, 제어문 수업에 똑같은 에러를 다루네요...(ㅠㅠ)
                      아마 index.py에 id값이 없는게 문제였나봅니다. index.py에 id값을 넣고 주소창에도 index.py?id='web' 이렇게 쳐 주니까 정상적으로 작동하더라구요, 저는 계속 주소창에 index.py라고만 쳐서.... 못 읽었나봅니다. 버전이랑은 상관없는 듯 하네요
                    • HoWWWWWhy
                      감사합니다. 이 댓글 덕분에 힌트를 얻어서...
                      html 수업에서 추가해놓았던 게시판 관련 코드를 지웠더니 해결됐어요!!
                      대화보기
                      • 에듀케이티드키드
                        잘들었습니다~
                      • Inyeong Gim
                        여기부터 진행이 안되서 막혔습니다. ㅠㅠ.. 나머지 강의들부터 듣고 있는데, 어떻게 해결해야할지 어렵네요
                      • 김대빵
                        화면이 사라져 "짬작이야"했습니다. ㅎ
                        감사합니다.
                      • 이한올
                        정말이네요!!
                        대화보기
                        • JuicyFresh
                          감사합니다.
                        • Seankim
                          잘들었습니다.
                        • 태공
                          잘 들었습니다! 감사해요~
                        • gogo0920
                          감사합니다~!
                          대화보기
                          버전 관리
                          egoing
                          현재 버전
                          선택 버전
                          graphittie 자세히 보기