рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдлреНрд▓рд╛рд╕реНрдХ рдкрд░)

рд▓реЗрдЦ рдЙрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдЧрд╛ рдЬреЛ рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХреА рд╣рд╛рдирд┐ рдХрд╛ рдХрд╛рд░рдг рдерд╛: рднрд╡рд┐рд╖реНрдп рдпрд╛ рдореМрдЬреВрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рди рдХреЗрд╡рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡рд░реНрддрдорд╛рди рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реА рд╕рдВрд░рдЪрдирд╛ рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рд╣реЛрдЧреА, рдмрд▓реНрдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдпрд╛ рдЗрд╕реЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрддрдиреА рджрд░реНрджрдирд╛рдХ рдирд╣реАрдВ рд╣реЛрдЧреА?

рдЬрдбрд╝


рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЗрд╕реЗ myapp рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реЛрдиреЗ рджреЗрдВред рд╣рдо рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ (рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдбреЗрд╡реЗрд▓ рд╣реИ)ред

mkdir myapp cd myapp 

рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╕рднреА рдХрд╛рд░реНрдп рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЕрдВрджрд░ рд╣реЛрдВрдЧреЗ

Git


рдПрдХ рдЦрд╛рд▓реА рднрдВрдбрд╛рд░ рдХрд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

 git init 

.gitignore


 #   *.pyc *.pyo **/__pycache__/ #      **/config/ #       **/data/ **/logs/ #        (  ) **/bin/ 

рдореБрдЭреЗ рдкрдврд╝рд╛ рджреЛ


рдЕрдЧрд▓рд╛ рдХрджрдо рдЖрд╡рд╢реНрдпрдХ README рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛ рд╣реИред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдорд╛рд░реА рднрд╡рд┐рд╖реНрдп рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдореБрдЦреНрдп рдФрд░ рдореБрдЦреНрдп рд╡рд┐рд╡рд░рдг рд╣реИред рдХреБрдЫ рд▓реЛрдЧ README.txt рдирд╛рдордХ рдПрдХ рдкрд╛рда / рд╕рд╛рджрд╛ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред рдмрдбрд╝реЗ рдкреЛрд░реНрдЯрд▓реНрд╕ рдкрд░, README.md рдирд╛рдо рдХреЗ рд╕рд╛рде рдорд╛рд░реНрдХрдбрд╛рдЙрди рдорд╛рдирдХ рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдореБрдЭреЗ html рдкрд╕рдВрдж рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рд░рдВрдЧ рдЪрдпрди, рд▓рд┐рдВрдХ, рдЪрд┐рддреНрд░ рдФрд░ рдЕрдиреНрдп рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдмрдирд╛рдирд╛, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓рдирд╛, <pre> рдФрд░ <code> рдЯреИрдЧ рдореЗрдВ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдПрдореНрдмреЗрдб рдХрд░рдирд╛, рд╕рдЬрд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рд╣реЙрдЧрд╡рд░реНрдЯреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рдЕрдиреНрдп рдЬрд╛рджреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдирд╛рдо README.html

 touch README.html 

рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрдИ рдЯреАрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЯреАрдо рдХреЗ рдкрд╛рд╕ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдореЙрдбреНрдпреВрд▓, рдШрдЯрдХ, рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдЖрджрд┐ рдХреЗ рдЕрдВрджрд░ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА README рдлрд╛рдЗрд▓ рд╣реЛред

рдЖрд╡реЗрджрди


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

 mkdir myapp touch myapp/__init__.py 

рдореЙрдбреНрдпреВрд▓ рдФрд░ рдШрдЯрдХ


рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЗ рдЕрдВрджрд░, __init__.py рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рднрд╛рдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпреЗ рдПрдХ рдЕрд▓рдЧ рд╕реЗрд╡рд╛ рдХреЗ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХрд▓-рд╢рд╛рдЦрд╛ URL рдпрд╛ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ URL рдХреЗ рд╕рд╛рде (рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдмреНрд▓реЙрдЧ рд▓реЗрдЦ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди рдмрдирд╛ рд░рд╣рд╛ рд╣реИ, рдЬрд╣рд╛рдБ рдкреНрд░рдкрддреНрд░ / рдкреГрд╖реНрда рдФрд░ / рдкреГрд╖реНрда / рдЖрдИрдбреА рдХреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрде рд╣реИрдВ)

 mkdir myapp/bp_component touch myapp/bp_component/__init__.py 

рдпрд╛

 mkdir myapp/ns_component touch myapp/ns_component/__init__.py 

DB рдореЙрдбрд▓


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

 mkdir myapp/models touch myapp/models/__init__.py touch myapp/models/page.py 

рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ


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

 mkdir myapp/templates mkdir myapp/templates/html mkdir myapp/templates/js mkdir myapp/templates/css 

рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, js рдФрд░ css рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реНрдереИрддрд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдпрд╛ рд╕реАрдПрд╕рдПрд╕ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд░рд╕реНрдкрд░ рдХреЛрдб, рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛрдб рдпрд╛ рдПрдореНрдмреЗрдб рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдмрдЯрди рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдХреИрд▓реЗрдВрдбрд░ рдбреНрд░рд╛рдЗрдВрдЧ рдШрдЯрдХ рд╣реИ, рддреЛ рдХреИрд▓реЗрдВрдбрд░ рдШрдЯрдХ рдХреЛ js рдореЗрдВ рд░рдЦрдирд╛ рдФрд░ HTML рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдШрдЯрдХ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рдеред рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЧрдВрджрдЧреА рдХреА рддрд░рд╣ рдкреНрд░рддреАрдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рддреИрдпрд╛рд░-рдХрд┐рдП рдЧрдП рд╕реНрдереИрддрд┐рдХ рдХреИрд▓реЗрдВрдбрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рд╕реЗ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ рдЖрдзреЗ рд╕рд╛рд▓ рдпрд╛ рдПрдХ рд╕рд╛рд▓ рдХреЗ рдмрд╛рдж рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдкрдХреЛ рдШрдЯрдХ рдХреЛ рдХреБрдЫ рдФрд░ рддреАрди рдЧреБрдгреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рди рдХреЗрд╡рд▓ рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛рдкрд┐рдХ рдХрд░реЗрдВ, рдмрд▓реНрдХрд┐ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╡рд░реНрд╖ рдХреЗ рд▓рд┐рдП рдХреИрд▓реЗрдВрдбрд░ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВ), рдФрд░ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдЬрд╛рджреВ рдЕрдВрджрд░ рдерд╛, рдХрд┐рд╕реА рдХреЛ рдпрд╛рдж рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЖрд╡реЗрд╖рдг рдЕрдзрд┐рдХ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рджреЗрдВрдЧреЗред

рд╕реНрдерд┐рддрд┐-рд╡рд┐рдЬреНрдЮрд╛рди


рдпрд╣рд╛рдБ, рд╕рднреА рдореБрдЦреНрдп рд╢реИрд▓рд┐рдпрд╛рдБ рдЬреЛ рдХрднреА рдирд╣реАрдВ рдмрджрд▓рддреА (рдпрд╛ рдЕрддреНрдпрдВрдд рджреБрд░реНрд▓рдн рд░реВрдк рд╕реЗ рдмрджрд▓рддреА рд╣реИрдВ) рд╢реИрд▓рд┐рдпрд╛рдБ, рдЪрд┐рддреНрд░, рдзреНрд╡рдирд┐рдпрд╛рдБ, рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдЪреМрдЦрдЯреЗ рд╣реИрдВред

 mkdir myapp/static mkdir myapp/static/css mkdir myapp/static/js mkdir myapp/static/images 

рдлрдВрдХреНрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА


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

 mkdir myapp/lib touch myapp/lib/__init__.py 

рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди


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

 mkdir config echo "CONFIG = 'config.devel'" > config/__init__.py touch config/devel.py touch config/prod.py 

рдХреНрдпреЛрдВ рдЪрд┐рддрд╛? рд╣рд╛рдВ, рдХреНрдпреЛрдВрдХрд┐ XML, YAML, INI рдФрд░ рдЕрдиреНрдп рдмрдХрд╡рд╛рд╕ рдХреА рдкрд╛рд░реНрд╕рд┐рдВрдЧ, рдЬрдм рд╣рд╛рде рдореЗрдВ рдлреЙрд░реНрдо рдХреЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдмрдирд╛рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ, рдХрд┐рд╕реА рдХреЛ рднреА рдкрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 import os DEBUG = True TITLE = 'SpecialistOff.NET' DIR_BASE = '/'.join(os.path.dirname(os.path.abspath(__file__)).split('/')[:-1]) DIR_DATA = DIR_BASE + '/data' DIR_FILES = DIR_DATA + '/files' MIMETYPES = { 'gif': 'image/gif', 'jpg': 'image/jpeg', 'jpeg': 'image/jpeg', 'png': 'image/png', 'txt': 'text/plain' } SERVERS = [ {'name': 'server1', 'IP': '8.8.8.8', 'port': '80'} ] 

рдбреЗрдЯрд╛


рдлрд╝рд╛рдЗрд▓реЗрдВ, рд▓реЙрдЧ рдФрд░ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рд▓реЛрдб рдХрд┐рдП рдЧрдП рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

 mkdir data mkdir data/files 

рдкрд░реАрдХреНрд╖рдг


рдкрд░реАрдХреНрд╖рдг рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЬреБрдбрд╝рдирд╛рд░

 mkdir tests mkdir tests/fixture touch tests/__init__.py touch test.py chmod +x test.py 

рдкреНрд░рд▓реЗрдЦрди


рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдЕрд▓рдЧ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрдЯрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕реНрдерд┐рд░ рд╡реЗрдм рдкреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ index.html рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХрд┐рд╕реА рднреА рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд▓реЗрдЦрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдпрд╛ рдбрд╛рдпрд░реЗрдХреНрдЯреНрд░реА рд╕реЗ рд╕реАрдзреЗ рдХрд┐рд╕реА рднреА рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд░ рдХреЗ рд╕рд╛рде рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░реЗрдВ (рдХрдВрд╕реЛрд▓ рдЬреИрд╕реЗ рд▓рд╛рдпрдирдХреНрд╕, рдПрд▓рд┐рдВрдХреНрд╕ рд╕рд╣рд┐рдд)ред

 mkdir doc touch doc/index.html 

рддреИрдирд╛рддреА


рдпрд╣ рд╕рдм рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ (рдореЗрд░реА рд╡рд┐рдирдореНрд░ рд░рд╛рдп рдореЗрдВ) рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

 mkdir deploy touch deploy/requirements.txt touch deploy/build.sh mkdir deploy/config touch deploy/config/__init__.py touch deploy/config/demo.py mkdir deploy/cron touch deploy/cron/myapp mkdir deploy/docker touch deploy/docker/Dockerfile touch deploy/docker/docker-compose.yml mkdir deploy/nginx touch deploy/nginx/myapp.conf mkdir deploy/uwsgi touch deploy/uwsgi/conf.ini mkdir deploy/uwsgi/conf.d touch deploy/uwsgi/conf.d/myapp.conf 

рд▓реЙрдЧрд┐рдВрдЧ


рдпрд╣рд╛рдВ рдЖрдк рдЯреЗрд╕реНрдЯ рд▓реЙрдиреНрдЪ рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

 mkdir logs 

рд╕рд╣рд╛рдпрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ


 mkdir utils touch utils/useradd.py chmod +x utils/useradd.py 

рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп


рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╡рд╣ рд╕рдм рд╣реИред рдореИрдВ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдХреНрдпреЛрдВ рд╣реВрдБ? рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдореЗрд░реЗ рд▓рд┐рдП рдЦреБрдж рд╕реЗ рдмреЗрд╣рддрд░ рдмреЛрд▓реЗрдВрдЧреЗред рдореЗрд░реА рдмрд╛рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдпрд╛ рддреЛ рд╡рд┐рд╡рд╛рдж рдпрд╛ рд╡рд┐рд╡рд╛рдж рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддреА рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмреЗрд╣рддрд░ / рдмрджрддрд░ рд╣реЛрдЧрд╛ред

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


All Articles