рдЙрдиреНрдирдд "рдирдорд╕реНрдХрд╛рд░! рджреБрдирд┐рдпрд╛ ┬╗рдлреНрд▓рд╛рд╕реНрдХ рдорд╛рдЗрдХреНрд░реЛрдлреНрд░рд╛рдорд╡рд░реНрдХ рдкрд░

рдЫрд╡рд┐

рд╢реБрдн рджреЛрдкрд╣рд░, рдкреНрд░рднрд╛рддред

рдЗрддрдирд╛ рд╕рдордп рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдПрдХ рдорд┐рддреНрд░ рдФрд░ рдореИрдВрдиреЗ рд╡рд░реНрд╕реБрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдкрд╛рда рдЦрд┐рд▓реМрдирд╛ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рд╣рдореЗрдВ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╣рдордиреЗ рдХреМрди рд╕реЗ рд╕рдорд╛рдзрд╛рди рдЪреБрдиреЗ рд╣реИрдВред

рд╣рдо рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдлреНрд▓рд╛рд╕реНрдХ рдорд╛рдЗрдХреНрд░реЛрдлреНрд░рд╛рдорд╡рд░реНрдХред

рдлреНрд▓рд╛рд╕реНрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ



рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ

 рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдлреНрд▓рд╛рд╕реНрдХ
 рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ 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 рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ:

#!/usr/bin/env python from app_name import app if __name__ == '__main__': if app.debug: app.run(debug=True) else: app.run(host='0.0.0.0') 


рдЖрд╡реЗрджрди рдФрд░ рдЗрд╕рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рд╕рд╣рд┐рдд рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЪреАрдЬреЗрдВ __init__.py рдореЗрдВ рд╣реЛрддреА рд╣реИрдВ

 import os FLASK_APP_DIR = os.path.dirname(os.path.abspath(__file__)) # Flask from flask import Flask app = Flask(__name__) # Config app.config.from_object('app_name.config.DevelopmentConfig') # ProductionConfig #app.config.from_object('app_name.config.ProductionConfig') # Connect to database with sqlalchemy. from flask.ext.sqlalchemy import SQLAlchemy db = SQLAlchemy(app) # Business Logic # http://flask.pocoo.org/docs/patterns/packages/ # http://flask.pocoo.org/docs/blueprints/ from app_name.views import frontend app.register_blueprint(frontend) 


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 рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

 # target_metadata = mymodel.Base.metadata from app_name import db target_metadata = db.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__) # 404 page not found "route" @app.errorhandler(404) def not_found(error): title = "404 Page not found" return render_template('404.html', title=title), 404 # 500 server error "route" @app.errorhandler(500) def server_error(error): title = "500 Server Error" db.session.rollback() return render_template('500.html', title=title), 500 # general routes @frontend.route('/') def index(): return render_template( 'index.html', title = u' ', ) 


рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗ рдЧрдП рдереЗ рдЬреЛ рдЧрдмрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдЕрднреА рднреА рд╡рд╣реА рд╣реИ "рд╣реИрд▓реЛ, рд╡рд░реНрд▓реНрдб!", рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВред

рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрдм рдпрд╣ рдЦрд╛рд▓реА рд╣реИред рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдФрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде, рдЬреЛ рдХреНрд░рдорд╢рдГ рд╕реНрдерд┐рд░ рдФрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдЭреВрда рдмреЛрд▓рддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИред

рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓рд╛рдПрдБ



рдирдЧрдиреЗрдХреНрд╕ рдФрд░ рдЙрд╡реНрд╕рдЧреА рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдкрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рд╕реБрдВрджрд░ рдбрд┐рдмрдЧрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред Runserver.py рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рдбрд┐рдмрдЧрд░ рдЬрдЧрд╣ рдореЗрдВ рд╣реИред

Uwsgi рдбреЗрдорди рдЕрдкрдиреЗ рд▓реЙрдЧ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рддреНрд░реБрдЯрд┐ рдЬрд╛рдирдХрд╛рд░реА рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рдмрдЧ рдХрд╛рдлреА рдкреБрд░рд╛рдирд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдПрдХ рд╕рд╛рд▓ рдХрд╛ рд╕рд╡рд╛рд▓ рдерд╛ ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрд╡рдпрдВ рдпрд╛ рдирдЧреНрдиреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЙрдирдХреА рджреЛрд╕реНрддреА рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдЧрд▓рддрдлрд╣рдореА рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХреЗред рд╣рдо рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдбрд┐рдмрдЧрд░ рдФрд░ рдореЗрд▓ рдкрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рдордп рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдлреНрд▓рд╛рд╕реНрдХ рдореЗрдВ рдЕрдкрдирд╛ рдЖрд╡реЗрджрди рд▓рд┐рдЦ рд░рд╣реЗ рд╣реЛрдВрдЧреЗред

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


All Articles