Django рдореЗрдВ рдкреНрд░рдмрдВрдзрди рдЖрджреЗрд╢ рдмрдирд╛рдирд╛

рдкреНрд░рдмрдВрдзрди рдХрдорд╛рдВрдб - рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдореИрдиреЗрдЬ рдХрдорд╛рдВрдб рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрд╡реЗрджрди рдХреЗ рд╕рдмрд╕реЗ рдЖрдо рдХреНрд╖реЗрддреНрд░ рдПрдХ рдмрд╛рд░ рдпрд╛ рд╕рдордп-рд╕рдордп рдкрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╕реВрдЪрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХ-рдмрд╛рд░ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛, рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдореЙрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд▓реНрджреА рд╕реЗ рдмрдирд╛рдирд╛ рдЖрджрд┐ред

рдореВрд▓ рдмрд╛рддреЗрдВ


рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдкреНрд░рдмрдВрдзрди / рдХрдорд╛рдВрдб рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдПрдкреНрд▓рд┐рдХреЗрд╢рди INSTALED_APPS рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП)ред рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдлрд╛рдЗрд▓ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдлрд╛рдЗрд▓реЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреА, рд╕рд┐рд╡рд╛рдп рдЙрдирдХреЗ рдЬреЛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВред

app/ __init__.py management/ __init__.py commands/ __init__.py _tools.py zen.py 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЬрд╝реЗрди рдХрдорд╛рдВрдб рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди _tools рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдХрдорд╛рдВрдб django.core.management.base.BaseCommand рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИрдВред рд╕рд░рд▓рддрдо рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣реИрдВрдбрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдпрд╣ рдЖрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдкрд░рд┐рдгрд╛рдо рдХрдВрд╕реЛрд▓ рдореЗрдВ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

 from django.core.management.base import BaseCommand class Command(BaseCommand): help = 'The Zen of Python' def handle(self, *args, **options): import this 

рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдЖрджреЗрд╢ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

 python manage.py zen The Zen of Python, by Tim Peters Beautiful is better than ugly. ... 

рд╣реЗрд▓реНрдк рдХреНрд▓рд╛рд╕ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рд╡рд┐рд╡рд░рдг рд╣реИ рдЬреЛ рддрдм рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЬрдм --help рд╕реНрд╡рд┐рдЪ рд╡рд╛рд▓реА рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдпрджрд┐ рдХрдорд╛рдВрдб рдЧрд▓рдд рджрд░реНрдЬ рдХреА рдЬрд╛рддреА рд╣реИред

 $ python manage.py zen --help usage: manage.py zen [-h] [--version] [-v {0,1,2,3}] [--settings SETTINGS] [--pythonpath PYTHONPATH] [--traceback] [--no-color] The Zen of Python optional arguments: -h, --help show this help message and exit --version show program's version number and exit -v {0,1,2,3}, --verbosity {0,1,2,3} Verbosity level; 0=minimal output, 1=normal output, 2=verbose output, 3=very verbose output --settings SETTINGS The Python path to a settings module, eg "myproject.settings.main". If this isn't provided, the DJANGO_SETTINGS_MODULE environment variable will be used. --pythonpath PYTHONPATH A directory to add to the Python path, eg "/home/djangoprojects/myproject". --traceback Raise on CommandError exceptions --no-color Don't colorize the command output. 

рдкрд╛рд░реНрд╕рд┐рдВрдЧ рддрд░реНрдХ


рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реА рдЯреАрдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 7 рддрд░реНрдХ рджреЗ рд░рд╣реА рд╣реИред

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣рдо рдЕрдкрдиреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдореЗрдВ add_arguments рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЙрди рд╕рднреА рддрд░реНрдХреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЕрдкрдиреА рдЯреАрдо рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рддрд░реНрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде parser.add_argument рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рдВрдмреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣реИрд▓реЛ рджреБрдирд┐рдпрд╛ рд╕рд┐рд░реНрдл -s рдФрд░ - orortort рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдореБрджреНрд░рд┐рдд рд╣реЛ:

 from django.core.management.base import BaseCommand class Command(BaseCommand): help = 'The Zen of Python' def handle(self, *args, **options): if options['short']: import __hello__ else: import this def add_arguments(self, parser): parser.add_argument( '-s', '--short', action='store_true', default=False, help='  ' ) 

-S рд╕реНрд╡рд┐рдЪ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдЧреАред

 $ python manage.py zen -s Hello world... (coolwriter)$ python manage.py zen The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. ... 

рдЖрдЗрдП рд╣рдо рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдХрд┐ рддрд░реНрдХреЛрдВ рдХреА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреИрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдЬрд╛рддреА рд╣реИред

рдкрд╛рд░реНрд╕рд░ рдХреЛ argparse.ArgumentParser рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ рдЖрдк рдЕрдЬрдЧрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ argparse рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ add_argument рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ:

рдирд╛рдо рдпрд╛ рдЭрдВрдбреЗ - рдирд╛рдо рдпрд╛ рд▓реЗрдмрд▓ рдХреА рд╕реВрдЪреА рдпрд╛ рдирд╛рдоред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ 'рдЫреЛрдЯрд╛', тАЛтАЛ'-s' рдФрд░ '--рд╢реЙрд░реНрдЯ' рд╣реИред
рдХрд╛рд░реНрд░рд╡рд╛рдИ - рддрд░реНрдХ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк (рд▓реЗрдХрд┐рди рд╕рднреА рдирд╣реАрдВ) рд╡рд┐рдХрд▓реНрдк рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИрдВ:

рд╕реНрдЯреЛрд░ - рд╣рдорд╛рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред рдпрджрд┐ рдХрдИ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЕрдВрддрд┐рдо рдХрд╛ рдореВрд▓реНрдп
store_const - рдирд╛рдо рдХреБрдВрдЬреА рдореЗрдВ рдирд┐рд░рдВрддрд░ рдорд╛рди рдХреЛ рд╕рд╣реЗрдЬреЗрдВред рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рд╕рдорд╛рди add_argument рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрд╕реНрдЯ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 parser.add_argument('my_option', action='store_const', const=1234) 

рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╣реИрдВрдбрд▓ рдлрд╝рдВрдХреНрд╢рди 'my_option': 1234 рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

store_true, store_false - рдкрд┐рдЫрд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗред рд╕рд╣реА рдпрд╛ рдЧрд▓рдд рд╕рдВрдЧреНрд░рд╣реАрдд
append - рдореВрд▓реНрдп рд╕реВрдЪреА рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реЛрдЧрд╛
append_const рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдХреЙрдиреНрд╕реНрдЯреИрдВрдЯ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди (рдЬреЛ рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)

рдирд░реНрдЧ рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рди: рдкреВрд░реНрдгрд╛рдВрдХ, '?' - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд░реНрдХ рд╕реЗ рдПрдХ рдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди, '*' - рдЬрд┐рддрдиреЗ рднреА рд╣реИрдВ, рдФрд░ рдПрдХ рд╕реВрдЪреА рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, '+' - рдХрдо рд╕реЗ рдХрдо рдПрдХ, рдФрд░ рдпрджрд┐ рдХрдИ - рдПрдХ рд╕реВрдЪреА рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ argparse.REMAINDER - рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рд╕рднреА рд╢реЗрд╖ рддрд░реНрдХ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред ред рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд = const

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдЖрдкрдХреЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдореВрд▓реНрдп рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рднрд▓реЗ рд╣реА рдХреЗрд╡рд▓ рдПрдХ рд╣реА рддрддреНрд╡ рд╣реЛред (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЛ рд╕реВрдЪреА рдореЗрдВ рдбрд╛рд▓реЗ рдмрд┐рдирд╛, рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред)

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реИред
рдкреНрд░рдХрд╛рд░ - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЛ рддрд░реНрдХ рджреЗрдВред
рд╡рд┐рдХрд▓реНрдк - рддрд░реНрдХ рдореВрд▓реНрдп рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рддрд┐рдмрдВрдз рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рд╡рд┐рдХрд▓реНрдк рдорд╛рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рддрд░реНрдХ рд╣реИред
рдорджрдж - рдЗрд╕ рддрд░реНрдХ рдХрд╛ рдХреНрдпрд╛ рд╡рд░реНрдгрди рд╣реИред
рднрд╛рдЧреНрдп - рдпрджрд┐ рдЖрдк рдПрдХ рдЕрд▓рдЧ рдирд╛рдо рдХреЗ рддрд╣рдд рдЕрдкрдирд╛ рд╡рд┐рдХрд▓реНрдк рдмрдЪрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк dest = 'my_new_name' рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рддрд░реНрдХ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрди рддрд░реНрдХреЛрдВ рдХреЛ рд╡рд┐рдХрд▓реНрдк рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИрдВрдбрд▓ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рд╕рдВрднрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рдо рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЛ ar_ рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рд╕рднреА рдЕрдирд╛рдо рддрд░реНрдХреЛрдВ рдХреА add_arguments рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдХрдорд╛рдВрдб рдореЗрдВ рдХрдИ рдкреВрд░реНрдгрд╛рдВрдХ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

 def add_arguments(self, parser): parser.add_argument( nargs='+', type=int, dest = 'args' ) 

рдирд┐рд╖реНрдкрд╛рджрди рдЖрджреЗрд╢


рдХрдорд╛рдВрдб рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдо рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, run_from_argv () рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ create_parser рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдкрд╛рд░реНрд╕рд░ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдкрд╛рд░реНрд╕рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд░реНрдХ (рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреЛрдИ рд░рдВрдЧ рдирд╣реАрдВ) рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ add_arguments рд╡рд┐рдзрд┐ рдХреЛ рднреА рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред
  2. рдЙрд╕рдХреЗ рдмрд╛рдж, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд╛рд░реНрдп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрдИ рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╣реИрдВрдбрд▓ рдлрд╝рдВрдХреНрд╢рди рдЪрд▓рд╛рддрд╛ рд╣реИред рд╣реИрдВрдбрд▓ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдмреЗрд╢рдХ, рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдХ рдмрд╣реБ-рдкрдВрдХреНрддрд┐ рд╕рд╣рд╛рдпрддрд╛ рд╕рдВрджреЗрд╢ рдХреЗ рд╕реБрдВрджрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдВ:

 from argparse import RawTextHelpFormatter def create_parser(self, prog_name, subcommand): parser = super(Command, self).create_parser(prog_name, subcommand) parser.formatter_class = RawTextHelpFormatter return parser 

рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреНрд░рдмрдВрдзрди рдХрдорд╛рдВрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рдпрд╣реА рд╕рдм рдХреБрдЫ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдЖрд▓реЗрдЦ рдкреНрд░рдмрдВрдзрди рдХрдорд╛рдВрдб рдмрдирд╛рддреЗ рд╕рдордп рд╕рднреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЕрд╡рд▓реЛрдХрди рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдЙрдиреНрд╣реЗрдВ Django рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХреА рд░реВрдЪрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ
рдкреНрд░рд▓реЗрдЦрди ред

рд╡рд╣рд╛рдБ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рддрд░реНрдХ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реБрдП, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЦреБрд▓рд╛рд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдкреЗрдЪреАрджрдЧреА рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдЬрдЧрд░ рд╕рдВрдЪрдпрди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрд░реНрдЧрдкрд░реНрд╕ рдореЙрдбреНрдпреВрд▓

Source: https://habr.com/ru/post/hi415049/


All Articles