이 web.py 기반 간단한 모듈을 사용하면 Advanced argparse.ArgumentParser 객체 및 유사한 ( argh.ArgumentParser )에서 간단한 HTTP 웹 서버를 자동으로 설정할 수 있습니다. ARGH 위에서 이것을 사용하면 응용 프로그램에 정의 된 간단한 기능으로 웹 사용자 인터페이스를 자동으로 생성 할 수 있습니다. 이 패키지는 개인 명령 줄 스크립트를 다음 단계 인 내부 공유 유틸리티로 가져 오기 위해 만들어졌습니다.
설정과 같은 프로덕션의 경우 필요합니다.
메인 스크립트를 webui.webui.wsgi () 메소드를 호출하여 응용 프로그램 글로벌 객체를 노출시킵니다.
응용 프로그램에 맞게 index.wsgi 수정하십시오 (Trivial 구성, 위에서 언급 한 응용 프로그램 가져 오기)
Apache (또는 기타) 서버를 지원하는 WSGI 설정
설정과 같은 디버깅의 경우 필요하지만 내부 도구에 사용되므로 괜찮을 수도 있습니다).
argparse.ArgumentParser.parse_args() 또는 argh.dispatch() 와 같은 메소드를 각각 webui.Webui.getone() 또는 webui.Webui.dispatch() 로 교체하십시오. dispatch() 웹 서비스를 인스턴스화하고 발송 방법을 호출합니다 (사용자가 제공 한 사람 - 또는 argh 와 같은 인수 파서를 지원하는 디스패치 방법)
get() 및 getone() Dispatch parse_args() dispatch() 메소드를 래핑하고 웹 양식으로 제출 될 때 결과를 얻습니다.
argparseweb web.py 사용할 수 있어야합니다. pip install web.py 로 설치할 수 있습니다 (최신 버전 확인).
이 예제는 HTTP 서버를 설정하고 유효한 입력을 가져오고 HTTP 서버를 찢어 내고 환영하는 메시지를 stdout 및 종료합니다.
import argparse
from argparseweb import *
def main ():
parser = argparse . ArgumentParser ()
parser . add_argument ( "name" , default = "Anonymous" )
# previously opts = parser.parse_args()
opts = webui . Webui ( parser ). getone ()
print ( "Hello {name}, n this is a simple example." . format ( name = opts . name ))
if __name__ == "__main__" :
main ()이 예제는 중지 될 때까지 실행되며 모든 유효한 입력에 대해 환영하는 메시지를 인쇄합니다.
import argparse
from argparseweb import *
def main ():
parser = argparse . ArgumentParser ()
parser . add_argument ( "name" , default = "Anonymous" )
# previously opts = parser.parse_args()
for opts in webui . Webui ( parser ). get ():
print ( "Hello {name}, n this is a simple example." . format ( name = opts . name ))
if __name__ == "__main__" :
main ()이 예제는 HTTP 응답에서 환영하는 메시지를 인쇄하여 사용자에게 다시 보냅니다.
import argparse
from argparseweb import *
def welcome ( opts ):
print ( "Hello {name}, n this is a simple example." . format ( name = opts . name ))
def main ():
parser = argparse . ArgumentParser ()
parser . add_argument ( "name" , default = "Anonymous" )
# previously opts = parser.parse_args()
webui . Webui ( parser ). dispatch ( welcome , parsed = True )
if __name__ == "__main__" :
main ()이 스 니펫에는 WebUI 유틸리티에 대한 세 가지 작동 모드가 포함되어 있습니다.
가장 먼저 간단하게 : Argh의 자동 기능을 사용하여 명령 라인 파서 시설을 사용하는 디스패치 방법은 WebUI와 완전히 관련이 없으며 기존 명령 줄 사용 능력을 잃지 않을 것입니다.
최초의 명령 줄 인수로 --webui 얻으려면 개발 웹 서버 (기본값 *: 8080)를 설정하고 사용할 준비가되었습니다.
WSGI 인터페이스를 지원하는 application 글로벌 개체를 노출시킵니다. 올바른 WSGI 구성이있는 브라우저를 가리키면 (처음으로 약간 고통 스러웠습니다) 마법처럼 작동합니다 :)
myapp.py :
import argparse
from argparseweb import *
def get_parser ():
"""Generate generic argument parser"""
cmd_parser = argh . ArghParser ()
cmd_parser . add_commands ([...])
return cmd_parser
def main_1 ():
# k. get the parser as usual
cmd_parser = get_parser ()
# last chance to use webui, if --webui is passed as first command line argument
# remove it as let webui handle the rest
if sys . argv [ 1 ] == '--webui' :
sys . argv . remove ( '--webui' )
webui . Webui ( cmd_parser ). dispatch () # second mode of operation - development/fast setup
else :
# dispatch either webui or argh
cmd_parser . dispatch () # first mode of operation - regular command line
def main_2 ():
parser = argparse . ArgumentParser ()
# TODO: fill argparse
# opts = parser.parse_args()
opts = webui . Webui ( parser ). getone ()
# TODO: use opts as you would with any ArgumentParser generated namespace,
# opts is really a namespace object directly created by parser, and webui only compiled an argument sequence
# based on the filled form, passed into parser.parse_args() and back to you
def wsgi ():
global application
# create a webui application using the command line argument parser object
# and make it's wsgi function the global `application` parameter as required by wsgi
cmd_parser = get_parser ()
application = webui . Webui ( cmd_parser ). wsgi () # third mode of operation - production wsgi application
if __name__ == "__main__" :
# script initialized as main, lets do our trick
main ()
else :
# if script wasn't initialized as main script, we're probably running
# in wsgi mode
wsgi ()index.wsgi :
# TODO: replace with your application path
# i found now way to get it automatically in wsgi :/
APP_DIR = '/var/www/myapp'
import sys , os
sys . path . insert ( 0 , APP_DIR )
os . chdir ( APP_DIR )
from myapp import application 더 많은 예가 test.py 에 있습니다
완료: