문제

PHP에서만 사용할 수 있습니다 $_POST 게시물 및 $_GET get (query string) 변수의 경우. 파이썬의 등급은 무엇입니까?

도움이 되었습니까?

해결책

이와 함께 HTML 양식을 게시한다고 가정 해 봅시다.

<input type="text" name="username">

사용하는 경우 원시 CGI:

import cgi
form = cgi.FieldStorage()
print form["username"]

사용하는 경우 장고, 철론, 플라스크 또는 피라미드:

print request.GET['username'] # for GET form method
print request.POST['username'] # for POST form method

사용 터보 가어, 체리:

from cherrypy import request
print request.params['username']

web.py:

form = web.input()
print form.username

Werkzeug:

print request.form['username']

Cherrypy 또는 Turbogears를 사용하는 경우 핸들러 기능을 직접 가져 오는 것을 정의 할 수도 있습니다.

def index(self, username):
    print username

Google App Engine:

class SomeHandler(webapp2.RequestHandler):
    def post(self):
        name = self.request.get('username') # this will get the value from the field named username
        self.response.write(name) # this will write on the document

따라서 실제로 그 프레임 워크 중 하나를 선택해야합니다.

다른 팁

Nosklo의 답변이 매우 광범위하고 유용하다는 것을 알았습니다! 원시 요청 데이터에 직접 액세스 할 수있는 나 자신과 같은 사람들은 다음을 수행하는 방법을 추가하고 싶습니다.

import os, sys

# the query string, which contains the raw GET data
# (For example, for http://example.com/myscript.py?a=b&c=d&e
# this is "a=b&c=d&e")
os.getenv("QUERY_STRING")

# the raw POST data
sys.stdin.read()

나는 이것이 오래된 질문이라는 것을 알고 있습니다. 그러나 좋은 대답이 없다는 것은 놀라운 일입니다.

우선 모든 질문은 프레임 워크를 언급하지 않고 완전히 유효합니다. 컨텍스트는 PHP 언어 동등성입니다. 파이썬에서 쿼리 문자열 매개 변수를 얻는 방법에는 여러 가지가 있지만 프레임 워크 변수는 편리하게 채워집니다. php에서 $ _get 및 $ _post도 편의 변수입니다. 그들은 각각 query_uri와 php : // 입력에서 구문 분석됩니다.

파이썬에서는 이러한 기능은 os.getenv ( 'query_string') 및 sys.stdin.read ()입니다. OS 및 SYS 모듈을 가져 오는 것을 잊지 마십시오.

우리는 여기에서 "CGI"라는 단어에주의해야합니다. 특히 웹 서버와 인터페이스 할 때 두 가지 언어와 공통점에 대해 이야기 할 때 특히 그렇습니다. 1. CGI는 프로토콜로서 HTTP 프로토콜에서 데이터 전송 메커니즘을 정의합니다. 2. 파이썬은 Apache에서 CGI 스크립트로 실행되도록 구성 할 수 있습니다. 3. Python의 CGI 모듈은 몇 가지 편의 기능을 제공합니다.

HTTP 프로토콜은 언어 독립적이며 Apache의 CGI 확장도 언어 독립적이므로 GET 및 게시 매개 변수를 얻는 데 언어에 대한 구문 차이 만 필요합니다.

Get Dictionary를 채우는 Python 루틴은 다음과 같습니다.

GET={}
args=os.getenv("QUERY_STRING").split('&')

for arg in args: 
    t=arg.split('=')
    if len(t)>1: k,v=arg.split('='); GET[k]=v

그리고 게시물 :

POST={}
args=sys.stdin.read().split('&')

for arg in args: 
    t=arg.split('=')
    if len(t)>1: k, v=arg.split('='); POST[k]=v

이제 다음과 같이 필드에 액세스 할 수 있습니다.

print GET.get('user_id')
print POST.get('user_name')

또한 CGI 모듈이 잘 작동하지 않는다는 것을 지적해야합니다. 이 HTTP 요청을 고려하십시오.

POST / test.py?user_id=6

user_name=Bob&age=30

cgi.fieldStorage (). getValue ( 'user_id')를 사용하면 모듈이 게시물 데이터를 맹목적으로 확인하기 때문에 널 포인터 예외가 발생합니다. 게시물 요청이 Get 매개 변수도 전달할 수 있다는 사실을 무시합니다.

CGI FieldStorage 객체에 저장됩니다.

import cgi
form = cgi.FieldStorage()

print "The user entered %s" % form.getvalue("uservalue")

CGI 프레임 워크로 사용하는 것에 달려 있지만 프로그램에 액세스 할 수있는 사전에서 사용할 수 있습니다. 나는 당신에게 문서를 가리키고 있지만 지금은 python.org를 통과하지 않습니다. 하지만 Mail.python.org 의이 노트는 첫 번째 포인터를 제공합니다.. CGI 및 Urllib Python Libs를보십시오.

업데이트

좋아, 그 링크가 파열되었습니다. 여기에 있습니다 기본 WSGI 참조

Python은 언어 일뿐입니다. 데이터를 얻고 게시하려면 Python으로 작성된 웹 프레임 워크 또는 툴킷이 필요합니다. Django는 Charlie가 지적했듯이 CGI 및 Urllib 표준 모듈은 다른 것입니다. Turbogears, Pylons, Cherrypy, Web.py, Mod_python, Fastcgi 등이 있습니다.

Django에서 귀하의보기 함수는 request.get 및 request.post가있는 요청 인수를받습니다. 다른 프레임 워크는 다르게 수행합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top