
рд╢реБрдн рджреЛрдкрд╣рд░, рдкреНрд░рднрд╛рддред
рдЗрддрдирд╛ рд╕рдордп рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдПрдХ рдорд┐рддреНрд░ рдФрд░ рдореИрдВрдиреЗ рд╡рд░реНрд╕реБрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдкрд╛рда рдЦрд┐рд▓реМрдирд╛ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рд╣рдореЗрдВ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╣рдордиреЗ рдХреМрди рд╕реЗ рд╕рдорд╛рдзрд╛рди рдЪреБрдиреЗ рд╣реИрдВред
рд╣рдо рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ
рдлреНрд▓рд╛рд╕реНрдХ рдорд╛рдЗрдХреНрд░реЛрдлреНрд░рд╛рдорд╡рд░реНрдХред
рдлреНрд▓рд╛рд╕реНрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ
рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдлреНрд▓рд╛рд╕реНрдХ
рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ sqlalchemy
рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдлреНрд▓рд╛рд╕реНрдХ- sqlalchemy
рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдП рдореИрдиреБрдЕрд▓ рдореЗрдВ,
sqlalchemy-migrate рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднрдпрд╛рдирдХ рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╣реИред рдпрд╣
sqlalchemy рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
sqlalchemy-migrate рдкреГрд╖реНрда рдХрд╣рддрд╛ рд╣реИ:
рдпрджрд┐ рдЖрдк SQLAlchemy рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рд╕реНрдХреАрдорд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдПрд▓реЗрдореНрдмрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдкрд╛рдк рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рд▓реЗрддрд╛ рд╣реИред
рд╕реАрдбреА ~
mkdir рдлреНрд▓рд╛рд╕реНрдХ
рд╕реАрдбреА рдлреНрд▓рд╛рд╕реНрдХ
alembic init рдПрд▓реЗрдореНрдмрд┐рдХ
mkdir app_name
рдФрд░ рдЕрдЧрд▓реЗ рдмрд┐рдВрджреБ рдкрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВред
рдЖрд╡реЗрджрди рдХрдВрдХрд╛рд▓
рдПрдХ рд╕рд╛рдзрд╛рд░рдг "рд╣реИрд▓реЛ, рд╡рд░реНрд▓реНрдб!" рд▓рд┐рдЦрдиреЗ рдХреЗ
рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ
рдЕрдЪреНрдЫрд╛ рдореИрдиреБрдЕрд▓ рд╣реИ ред рд▓реЗрдХрд┐рди, рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЦреЗрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдЕрдкрдиреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХрдВрдХрд╛рд▓ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдорд┐рд▓реАрдВред рдпрджрд┐ Django рд╣рдо рдкрд░ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рдмрд╛рдж рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдлреНрд▓рд╛рд╕реНрдХ рд╣рдореЗрдВ рдкреВрд░реНрдг рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рджреЗрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ "рд╕рдорд╕реНрдпрд╛" рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрд╣рд╛рдВ рдЦреЛрджрдирд╛ рд╣реИ, рддреЛ рдпрд╣ рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдФрд░ рдЖрдкрдХреЗ рд╣рд╛рде рд╕реЗ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдкрд░ рд▓рдВрдмреЗ рдзреНрдпрд╛рди рдХреЗ рдмрд╛рдж, рдЧреАрдердм (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, "рдлреНрд▓рд╛рд╕реНрдХ рдХрдВрдХрд╛рд▓" рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо),
рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ
рд╢реНрд░реГрдВрдЦрд▓рд╛ (рдорд┐рдЧреБрдПрд▓ рдЧреНрд░рд┐рдирдмрд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд ) рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдХреБрдЫ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдФрд░ рдЖрд╢реНрд╡рд╛рд╕рди рдорд┐рд▓рд╛ред
рдЕрдВрдд рдореЗрдВ, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХрд╛ рдХрдВрдХрд╛рд▓ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
~ / рдХреБрдкреНрдкреА
| - / рдПрд▓реЗрдореНрдмрд┐рдХ
| - / app_name
| | - / рд╕реНрдерд┐рд░
| | | - / рд╕реАрдПрд╕рдПрд╕
| | | - / рдЬреЗ рдПрд╕
| | | - / img
| | - / рдЯреЗрдореНрдкреНрд▓реЗрдЯ
| | | - index.html
| | - __init__.py
| | - config.py
| | - рдореЙрдбрд▓рд╣реЛрдо
| | - рд╡рд┐рдЪрд╛рд░
| - alembic.ini
| - README.md
- рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ
рд╣реИ - runserver.py
рдЖрдЗрдП рдХреНрд░рдо рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВ, рдлреНрд▓рд╛рд╕реНрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рд╣реИ, git рдХреЛ рдпрд╣рд╛рдВ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдпрд╣рд╛рдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдм рдХреБрдЫ рдирд┐рд╣рд┐рдд рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЗрд╡ рд╕рд░реНрд╡рд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдлрд╝рд╛рдЗрд▓ - runserver.py рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ:
рдЖрд╡реЗрджрди рдФрд░ рдЗрд╕рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рд╕рд╣рд┐рдд рд╕рднреА рдЖрд╡рд╢реНрдпрдХ
рдЪреАрдЬреЗрдВ __init__.py рдореЗрдВ рд╣реЛрддреА рд╣реИрдВ
import os FLASK_APP_DIR = os.path.dirname(os.path.abspath(__file__))
Config.py рд╣реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
class Config(object): SECRET_KEY = 'some_secret' SITE_NAME = 'app_name.ru' SQLALCHEMY_DATABASE_URI = 'mysql://user:pass@localhost/tabe_name?charset=utf8' class ProductionConfig(Config): DEBUG = False TESTING = False class TestConfig(Config): DEBUG = False TESTING = True class DevelopmentConfig(Config): '''Use "if app.debug" anywhere in your code, that code will run in development code.''' DEBUG = True TESTING = True
рдЕрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдмрд╢рд░реНрддреЗ рдХрд┐ рдЖрдкрдиреЗ PYTHONPATH рдореЗрдВ
рдлреНрд▓рд╛рд╕реНрдХ рдлрд╝реЛрд▓реНрдбрд░ рдЬреЛрдбрд╝рд╛ рд╣реЛ):
app_name рдЖрдпрд╛рдд рдРрдк рд╕реЗрдЙрд╕реА рд╕рдордп, рдЖрд╡реЗрджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред
Alembic рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╕рдордп
alembic.ini рднреА
рд░реВрдЯ рдореЗрдВ рд░рд╣реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕реЗ рдЫреВрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рдПрдирд╡реНрд╣рд┐рдбреНрд░реЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐
рдПрд▓реЗрдореНрдмрд┐рдХ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рд╣реИред
рд▓рд╛рдЗрди рдХреЗ рдмрд╛рдж
# target_metadata = mymodel.Base.metadata рдХреЛ рдЗрд╕рдореЗрдВ
рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
рдФрд░
run_migrations_online рдХреЛ рдлрд┐рд░ рд╕реЗ
рд▓рд┐рдЦреЗрдВ :
def run_migrations_online(): """Run migrations in 'online' mode. In this scenario we need to create an Engine and associate a connection with the context. """ alembic_config = config.get_section(config.config_ini_section) from app_name import app alembic_config['sqlalchemy.url'] = app.config['SQLALCHEMY_DATABASE_URI'] engine = engine_from_config( alembic_config, prefix='sqlalchemy.', poolclass=pool.NullPool) connection = engine.connect() context.configure( connection=connection, target_metadata=target_metadata ) try: with context.begin_transaction(): context.run_migrations() finally: connection.close()
рдпрд╣ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде
рдПрд▓реЗрдореНрдмрд┐рдХ рдХреЗ рдПрдХреАрдХрд░рдг рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
alembic revision --autogenerate -m 'рдХреБрдЫ рдкрд╛рда'
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкреНрд░рдкрддреНрд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреНрд░рдкрддреНрд░
hashcode_some_text.py рдХреА рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВред рдпрд╣ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рдЖрд╡рд╢реНрдпрдХ рднреА, рдЙрдиреНрд╣реЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдПред рдЦреБрдж рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрд▓реЗрдореНрдмрд┐рдХ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реИ, рдФрд░ рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдЪрд╛рдмрд┐рдпрд╛рдБ рднреА рдмрдирд╛рддрд╛ рд╣реИред
рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
рдПрд▓реЗрдореНрдмрд┐рдХ рдЙрдиреНрдирдпрди рд╕рд┐рд░
Config.py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рд╣рдо
Oracle рдХреЛ рдкрдХрдбрд╝рддреЗ рд╣реИрдВ , рдЬрд┐рд╕рдореЗрдВ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╕реЗрдЯ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
from app_name import app, db from flask import Blueprint, request, render_template frontend = Blueprint('frontend', __name__)
рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗ рдЧрдП рдереЗ рдЬреЛ рдЧрдмрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдЕрднреА рднреА рд╡рд╣реА рд╣реИ "рд╣реИрд▓реЛ, рд╡рд░реНрд▓реНрдб!", рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВред
рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрдм рдпрд╣ рдЦрд╛рд▓реА рд╣реИред рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдФрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде, рдЬреЛ рдХреНрд░рдорд╢рдГ
рд╕реНрдерд┐рд░ рдФрд░
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдЭреВрда рдмреЛрд▓рддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИред
рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓рд╛рдПрдБ
рдирдЧрдиреЗрдХреНрд╕ рдФрд░ рдЙрд╡реНрд╕рдЧреА рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдкрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рд╕реБрдВрджрд░ рдбрд┐рдмрдЧрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред Runserver.py рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рдбрд┐рдмрдЧрд░ рдЬрдЧрд╣ рдореЗрдВ рд╣реИред
Uwsgi рдбреЗрдорди рдЕрдкрдиреЗ рд▓реЙрдЧ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рддреНрд░реБрдЯрд┐ рдЬрд╛рдирдХрд╛рд░реА рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рдмрдЧ рдХрд╛рдлреА рдкреБрд░рд╛рдирд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдПрдХ
рд╕рд╛рд▓ рдХрд╛ рд╕рд╡рд╛рд▓ рдерд╛ ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрд╡рдпрдВ рдпрд╛ рдирдЧреНрдиреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЙрдирдХреА рджреЛрд╕реНрддреА рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдЧрд▓рддрдлрд╣рдореА рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХреЗред рд╣рдо рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдбрд┐рдмрдЧрд░ рдФрд░ рдореЗрд▓ рдкрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рдордп рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдлреНрд▓рд╛рд╕реНрдХ рдореЗрдВ рдЕрдкрдирд╛ рдЖрд╡реЗрджрди рд▓рд┐рдЦ рд░рд╣реЗ рд╣реЛрдВрдЧреЗред