Flask-Script 사용

15582 단어 flask
Flask-Script 확장은 Flask 외부 스크립트 작성을 지원합니다.이것은 개발 서버 실행, 사용자 정의Python Shell, 데이터베이스 설정 스크립트,cronjobs 및 웹 응용 프로그램 자체 이외의 다른 명령행 작업 포함

설치

pip install flask-script

명령 작성 및 실행


우선, 우리는 당신의 스크립트 명령을 실행하기 위해 파이썬 모듈을 만듭니다. 아래와 같습니다manage.py.
from flask import Flask
from flask_script import Manager

app = Flask(__name__)
manager = Manager(app)

if __name__ == "__main__":
    manager.run()

다음 단계는 명령을 만들고 추가하는 것입니다. 명령을 만드는 데는 세 가지 방법이 있습니다.
  • Command 클래스 하위 클래스화
  • @command 장식기 사용
  • @option 장식기 사용
  • Command 클래스 하위 클래스화
    다음은 Command 클래스 하위 클래스를 사용하여 간단한 밤을 들어 보겠습니다.
    from flask_script import Command
    
    class Hello(Command):
        def run(self):
            print 'hello world'

    다음은 우리의 Manager 사례에 명령을 추가합니다.
    manager.add_command('hello', Hello())

    또는, Commanddict의 실례를 관리자에게 전달할 수도 있습니다.run():
    manager.run({"hello": Hello()})

    이제 명령줄에 다음 명령을 입력합니다.
    # hello add_command hello
    root@ubuntu:~# python manage.py hello
    hello world

    또한 빈 명령을 사용하여 사용 가능한 명령과 설명된 목록을 얻을 수 있습니다.
    root@ubuntu:~# python manage.py 
    usage: manage.py [-?] {hello,shell,runserver} ...
    
    positional arguments:
      {hello,shell,runserver}
        hello
        shell               Runs a Python shell inside Flask application context.
        runserver           Runs the Flask development server i.e. app.run()
    ...

    우리는 또한 특정한 도움말 텍스트를 얻을 수 있다.
    # hello add_command hello
    python manage.py hello -?

    @command 장식기 사용하기
    다음은 @command 장식기를 사용하여 간단한 밤을 들어보자.
    @manager.command
    def hello():
        print 'hello world'

    다음은 명령줄에 다음 명령을 직접 입력할 수 있습니다.
    # hello hello
    root@ubuntu:~# python manage.py hello
    hello world

    @option 장식기 사용하기
    다음은 @option 장식기를 사용하여 간단한 밤을 들어보자.
    @manager.option('-n', '--name', help='option decorator', default='laowang')
    def hello(name):
        print 'hello {}'.format(name)

    다음은 명령줄에 다음 명령을 직접 입력할 수 있습니다.
    # hello hello
    root@ubuntu:~# python manage.py hello
    hello laowang

    명령에 매개변수 추가


    대부분의 명령은 명령줄에서 전달되는 이름이나 위치 매개 변수를 수신합니다.
    Command 클래스 하위 클래스화
    from flask_script import Manager, Command, Option
    
    class Hello(Command):
        option_list = (
            Option('-n', '--name', dest='name', default='laowang'),
        )
    
        def run(self, name):
            print 'hello {}'.format(name)
    
    manager = Manager(app)
    manager.add_command('hello', Hello())

    또는, 당신도Command 클래스에 다음과 같은 방법get_options을 정의할 수 있습니다.
    from flask_script import Manager, Command, Option
    
    class Hello(Command):
        def __init__(self, default_name='laowang'):
            self.default_name = default_name
    
        def get_options(self):
            return [
                Option('-n', '--name', dest='name', default=self.default_name),
            ]
    
        def run(self, name):
            print 'hello {}'.format(name)
    
    manager = Manager(app)
    manager.add_command('hello', Hello())

    그런 다음 터미널에 다음 명령을 입력하여 검증합니다.
    root@ubuntu:~# python manage.py hello
    hello laowang
    root@ubuntu:~# python manage.py hello -n laozhang
    hello laozhang
    root@ubuntu:~# python manage.py hello -n=laozhang
    hello laozhang
    root@ubuntu:~# python manage.py hello --name laozhang
    hello laozhang
    root@ubuntu:~# python manage.py hello --name=laozhang
    hello laozhang

    주의해야 할 것은 dest 매개 변수의 값은 run 방법의 매개 변수 이름에 대응하고 있으며, 값은 반드시 일치해야 한다. 그렇지 않으면 오류가 발생할 것이다!Option 뒤에 절대 잊지 마세요,, default는 기본 매개 변수 값을 나타냅니다.
    @command 장식기 사용하기
    @manager.command
    def hello(name):
        print 'hello {}'.format(name)

    그런 다음 터미널에 다음 명령을 입력하여 검증합니다.
    root@ubuntu:~# python manage.py laozhang
    hello laozhang

    또한 기본 매개변수로 설정할 수도 있습니다.
    @manager.command
    def hello(name='laowang'):
        print 'hello {}'.format(name)

    그런 다음 터미널에 유효성을 검사하기 위해 해당 명령을 입력합니다(기본 매개 변수가 없으면 다음과 같이 오류가 발생합니다).
    root@ubuntu:~# python manage.py 
    hello laowang
    root@ubuntu:~# python manage.py --name laozhang
    hello laozhang
    root@ubuntu:~# python manage.py --name=laozhang
    hello laozhang
    root@ubuntu:~# python manage.py -n laozhang
    hello laozhang
    root@ubuntu:~# python manage.py -n=laozhang
    hello laozhang

    주의해야 할 것은 간략한 형식-n이 매개 변수name의 첫 번째 자모라는 것이다!
    또한 선택 가능한 매개변수가 부울 값이면 다음과 같습니다.
    @manager.command
    def hello(sex=False):
        info = 'True' if sex else 'False'
        print info

    그런 다음 명령줄에 다음 명령 확인을 입력할 수 있습니다.
    root@ubuntu:~# python manage.py hello
    False
    root@ubuntu:~# python manage.py hello --sex 
    True
    root@ubuntu:~# python manage.py hello -s
    True

    @option 장식기 사용하기
    @manager.option('-u', '--url', dest='url', default='www.baidu.com')
    @manager.option('-n', '--name', dest='name', default='laowang')
    def hello(name, url):
        print name, url

    그런 다음 명령줄에 다음 명령 확인을 입력할 수 있습니다.
    root@ubuntu:~# python manage.py hello -n laozhang -u blog.csdn.net
    laozhang blog.csdn.net

    사용자 입력 가져오기

    Flask-Script에는 명령줄에서 사용자 입력을 가져오는 데 사용할 보조 함수 세트가 포함되어 있습니다.
    from flask_script import prompt_bool
    
    @manager.command
    def hello():
        if prompt_bool(' ?'):
            print ' '

    그런 다음 다음 명령줄에 다음 명령을 입력하여 검증할 수 있습니다.
    root@ubuntu:~# python manage.py hello
     ? [n]: y
     

    우리가 여기에 입력한 것은 y, 즉 yes이기 때문에 통과한 후에 인쇄를 진행했다!

    기본 명령


    위의 명령python manage.py의 출력 내용에서 볼 수 있듯이 명령hello 외에 두 개의 기본 명령shell, runserverrunserver
    다음은 명령줄에서 이 runserver 명령을 사용합니다.
    root@ubuntu:~# python manage.py runserver
     * Serving Flask app "manage" (lazy loading)
     * Environment: production
       WARNING: Do not use the development server in a production environment.
       Use a production WSGI server instead.
     * Debug mode: off
     * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

    이렇게 웹 서비스를 시작했습니다.또한, 우리는 -h-p 파라미터를 추가하여 각각host와port를 지정할 수 있습니다
    또한 다음과 같은 유사한 명령runserver 기능을 구현하기 위해 명령을 사용자 정의할 수 있습니다.
    from flask_script import Manager, Server
    
    manager = Manager(app)
    manager.add_command('run', Server())

    또한 다음과 같이 Server 에 host와 port 매개 변수를 추가할 수 있습니다.
    manager.add_command('run', Server(host='0.0.0.0', port=5000))

    shell shell 명령은 Python Shell을 시작하고 다음 명령줄에 기본 shell 명령을 다음과 같이 입력합니다.
    root@ubuntu:~# python manage.py shell
    
    >>> 
    

    또한 다음과 같은 명령을 실행하기 위해 명령을 사용자 정의할 수 있습니다.
    from flask_script import Manager, Shell
    
    def _make_context():
        return dict(app=app, age=18)
    
    manager = Manager(app)
    manager.add_command('sh', make_context=_make_context)

    다음 명령줄에 다음과 같이 사용자 정의 shell 명령을 입력합니다.
    root@ubuntu:~# python manage.py sh
    
    >>> print age
    18
    >>> 
    

    이로써 오버~~

    좋은 웹페이지 즐겨찾기