рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ Djang рдкрд░ рдПрдХ рд╕рд╛рдЗрдЯ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдпреЗ рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╕рд░рд▓ рдкреГрд╖реНрда рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЦреБрдж рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рдХрд╛рдо рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реНрдпрд╡рд╕рд╛рдп рдХрд╛рд░реНрдб рд╕рд╛рдЗрдЯ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ?)ред
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЬрдирддрд╛ рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреЗрд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ "рдХрдо рд╕реНрдХреНрд░рд┐рдмрд▓!" рдЬрд▓реНрджреА рдХрд░реЛ, рдбреАрдмрдЧ рдХрд░реЛ! тАЭDjango рдкрд░ рдЙрдЪреНрдЪ рдЧрддрд┐ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрдЯред
рдпреЗ 2 рдкреИрдЯрд░реНрди рд╣реИрдВ:
- рдмрд┐рд▓реНрдбрдЖрдЙрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЬреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЦреАрдВрдЪрддрд╛ рд╣реИ рдФрд░ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИ
- рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ, рдЕрд░реНрдерд╛рддреН рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдХрд╛ рдПрдХ рд╕реЗрдЯ (рд╣рдорд▓ рдФрд░ рд╕рд╛рд╕ рдореЗрдВ рддреИрдпрд╛рд░ рдлрд╛рдЗрд▓реЗрдВ)
рд╕реНрдерд╛рдкрдирд╛
рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдФрд░ Django рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
$ hg рдХреНрд▓реЛрди ssh: //hg@bitbucket.org/siberiano/fastdev-django my_new_project
$ cd my_new_project
$ rm .hg / hgrc
$ рдЕрдЬрдЧрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк -рдбрд┐рд╕реНрдЯрд╡рд░реНрд▓реНрдб
$ рдмрд┐рд▓реНрдбрдЖрдЙрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ
(
BitBucket рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬред )
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
makefile
рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рдмрдЬрд╛рдп, рд╣рдордиреЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореЗрдХрдлрд╛рдЗрд▓ рдмрдирд╛рдпрд╛ рдФрд░ рдХрдорд╛рдВрдб рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрдХрд▓рд┐рдд рдХреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рд░рдирдЖрдЙрдЯ рдХреЗрд╡рд▓
рдмрд┐рд▓реНрдбрдЖрдЙрдЯ рдФрд░
рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХреЗ рдмрд╛рдж рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдорд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рд╛:
- рд░рди - 0.0.0.0:8000 рдкрд░ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ
- shell_plus - рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд django рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ
- make_messages - html рдФрд░ haml рд╕реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ
- рд╕рдВрдХрд▓рди - рдЕрдиреБрд╡рд╛рдж рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ
buildout
zc.buildout рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬрд┐рд╕реЗ Zope рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ Pylons рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ ~ / .buildрдЖрдЙрдЯ рдХреЛ рдПрдХрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрдХреЗрдЬ (рд╕рд╛рдЗрдЯ рдкреИрдХреЗрдЬ) рд╕реЗ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ
рд╡реНрдпрдВрдЬрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЙрд╕ рдкрд░ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдПрдХ рдХрдбрд╝реА рд░рдЦреЛ)ред
рдмрд┐рд▓реНрдбрдЖрдЙрдЯ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдПрдХ рд▓рдЪреАрд▓реА рдкреНрд░рдгрд╛рд▓реА рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рддреИрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рд╕рдВрдЧреНрд░рд╣ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рд╡рд┐рдХрд╕рд┐рдд рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рдЬрд┐рд╕реЗ рдЖрдк рдПрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдо рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрдХреЗрдЬ рдФрд░
рдкрд╛рдЗрдлреНрд▓реЗрдХреНрд╕ рд╕реНрдЯреИрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдХреЗ рд╕рд╛рде Djanga рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
[Buildout]
рднрд╛рдЧреЛрдВ =
Django
pyflakes
[Django]
рд░реЗрд╕рд┐рдкреА = djangorecipe
рдЕрдВрдбреЗ =
IPython
django_extensions
[Pyflakes]
рдиреБрд╕реНрдЦрд╛ = zc.recipe.egg
рд▓рд┐рдкрд┐рдпрд╛рдБ = рдЪрд┐рддрд╛рдПрдБ
рдЕрдВрдбреЗ = pyflakes
рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐-рдЕрдВрдХ = pyflakes = pkg_resources: run_script
рддрд░реНрдХ = 'pyflakes', 'pyflakes'
рдмрд┐рд▓реНрдбрдЖрдЙрдЯ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рд╛рдЗрдЯ рд╕реЗ djangorecipe рдФрд░ zc.recipe.egg рдиреБрд╕реНрдЦрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред
рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк
djangorecipe рд╣реИ ред рдпрд╣ рдиреБрд╕реНрдЦрд╛ рдкреНрд░рдмрдВрдзрдХреАрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрдХреЗрдЬреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд┐рд▓реНрдбрдЖрдЙрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд╡рд▓ рдЕрдВрдбреЗ рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣рдореЗрдВ рдХреБрдЫ рд╕рд┐рд░рджрд░реНрдж рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ:
- рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╣рдо рд╕рдВрдХреЗрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдЕрдВрдбреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рд╡реЗ рдХрд┐рд╕реА рднреА рдирдИ рдкреНрд░рдгрд╛рд▓реА рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣реЛрд╕реНрдЯрд┐рдВрдЧ, рдФрд░ рдПрдХ (рдХрдорд╛рдВрдб) рдХреЗ рд╕рд╛рде!
- рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рд╕рд┐рд╕реНрдЯрдо рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрдВрдбреЗ рджреЗрдВрдЧреЗ (рд╕рдВрднрд╡рддрдГ рдкреБрд░рд╛рдиреЗ рднреА, рд▓реЗрдХрд┐рди рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА)
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛ 2 рдЯреАрдореЛрдВ рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИ:
$ рдЕрдЬрдЧрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк -рдбрд┐рд╕реНрдЯрд╡рд░реНрд▓реНрдб
$ рдмрд┐рди / рдмрд┐рд▓реНрдбрдЖрдЙрдЯ
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рддреИрдпрд╛рд░ рд╣реИ, рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП Django рд╕рд░реНрд╡рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ [рдХрдорд╛рдВрдб] рдХреЗ рдмрдЬрд╛рдп
$ рдмрд┐рди / django рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓рд╛ 0.0.0.0:8000
рдмреИрдЯрд░реА
рд▓реЗрдХрд┐рди рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдгрд╛рд▓реА рдЙрди рд╕рднреА рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ рдЬреЛ рддреНрд╡рд░рд┐рдд рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдирдП рд╕рд┐рд░реЗ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рдордд рдХрд░реЛред рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдмрд╣реБрдд рд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рддреБрд░рдВрдд рдкрдХрдбрд╝реА рдЬрд╛рддреА рд╣реИрдВред
$ рдмрд┐рди / pyflakes my_new_script.py
рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░: test_string, рдкрдВрдХреНрддрд┐ 2
рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рдпреБрдХреНрдд рдЪрд░: рдПрдХ рдФрд░_рд╡рд╛рд░, рдкрдВрдХреНрддрд┐ 5
(2 рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдЬреЛ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХреА рдЧрдИ рдереАред рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдмрд┐рдирд╛, рд╣рдо рджреЛ рдмрд╛рд░ рд╕рд╛рдЗрдЯ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдмрдЧ рджреЗрдЦреЗрдВрдЧреЗред)
рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдбреАрдмрдЧрд░реНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкрд╛рдпрдерди рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХреА рд╣рдордиреЗ рдЯреАрдо рдореЗрдВ рдЬрд╛рдБрдЪ рдХреА, рдЙрдирдореЗрдВ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ
PuDB рд╣реИ , рдпрд╣ рдПрдХ рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ рдЬреЛ рдЯреЗрдХреНрд╕реНрдЯ рдореЛрдб рдореЗрдВ рдорд┐рдбрдирд╛рдЗрдЯ рдХрдорд╛рдВрдбрд░ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ 80 рдХреЗ рджрд╢рдХ рдХреЗ рдкреБрд░рд╛рдиреЗ QBasic / Borland рдореАрдбрд┐рдпрд╛ рд╕реЗ рдорд┐рд▓рддрд╛ рдЬреБрд▓рддрд╛ рд╣реИред

рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рдбрд╛рд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬрд╣рд╛рдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рдЖрдпрд╛рдд рдкреБрдбрдм; pudb.set_trace ()
рдбрд┐рдмрдЧрд░ рдХреЗ рдЕрдВрджрд░ рдмрд╣реБрдд рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рд╣реИ (Ctrl + P), рдФрд░ рдЗрд╕рд╕реЗ рдЖрдк
IPyon рдкрд░ рдбрд┐рдмрдЧ рдХрдВрд╕реЛрд▓ рдореЗрдВ рднреА рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкрд╛рдпрдерди рдХрдВрд╕реЛрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЕрдкрдиреЗ рд░рд┐рдХреЙрд░реНрдб рдФрд░ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛ рдХреЛ рд╕рдм рдХреБрдЫ рд╕реНрд╡рдд: рдкреВрд░реНрдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреАрдмрдЧрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ред
рдПрдХ рдЕрдиреНрдп рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдЙрдкрдХрд░рдг рдбрд┐рдмрдЧ рдЯреВрд▓рдмрд╛рд░, рдпрд╛
Django рдбреАрдмрдЧ рдЯреВрд▓рдмрд╛рд░ рд╣реИ ред рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рдореЗрдВ рд╕реАрдзреЗ рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рд╕рднреА рдкреЗрдЬ рдирд┐рд░реНрдорд╛рдг рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдирд▓ рд╣реИ, рд╕рднреА рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдФрд░ рдЪрд░ рдХреА рдПрдХ рд╕реВрдЪреАред рдпрджрд┐ рдкреГрд╖реНрда "рдЧрд┐рд░рддрд╛" рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЧрд▓рдд рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдк рдмрд╕ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдкреЗрдЬ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдП рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдЖрдорддреМрд░ рдкрд░, рдЕрдЧрд░ рдХреБрдЫ рдЕрд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ, рдкреБрдбрдм рд▓рд╛рдЗрди рдбрд╛рд▓реЗрдВ
- рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ (рдЬреЛ рдПрдХ рдореЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдПрдХ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ)
- рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓реЗрдВ, рдЕрдкрдбреЗрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
- рдХрдВрд╕реЛрд▓ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдмрд╣рд╕ рд╢реБрд░реВ рдХрд░реЗрдВ
- рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдкрд░ рд▓реМрдЯрдиреЗ рдФрд░ рдбреАрдмрдЧ рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдпрджрд┐
Werkzeug рдХреЛ 5 рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдПрдХ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдорд░рдгреЛрдкрд░рд╛рдВрдд рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрдВрд╕реЛрд▓ рдХреЛ рд╕реАрдзреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЗ рдХрд┐рд╕реА рднреА рд╕реНрддрд░ рдкрд░! рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдпрджрд┐ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХрдВрдШреАред
$ рдмрд┐рди / pep8 my_new_script.py
'рдЖрдпрд╛рдд *' рдмрд╣реБрдд рд╣реА рдЦрд░рд╛рдм рд╢реИрд▓реА рд╣реИред рдкрдВрдХреНрддрд┐ реи
рдЕрдкреЗрдХреНрд╖рд┐рдд 2 рд░рд┐рдХреНрдд рд░реЗрдЦрд╛рдПрдБ, 1. рдкрдВрдХреНрддрд┐ 5ред
рдПрдЪрдПрдПрдордПрд▓, рд╕рд╛рд╕, OOCSSрдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдЕрдХреНрд╕рд░ рдЗрд╕реЗ рд▓рд┐рдЦрддреЗ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдорд╛рд░реНрдХрдЕрдк рднрд╛рд╖рд╛, рдЬрд┐рд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рди рдХрд┐ рдЖрдИрдбреАрдИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЬрд▓реНрджреА рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╛рдо рдХреЛ рдмрд╣реБрдд рддреЗрдЬ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдПрдЪрдПрдПрдордПрд▓ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ XML рднрд╛рд╖рд╛ рд╣реИ, рдЬреЛ рдХрдЪрд░рд╛ рдкрд╛рддреНрд░реЛрдВ рд╕реЗ рд╕рд╛рдл рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЯреИрдм рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк Django рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд╛рдпрдерди рдФрд░ рдЙрд╕рдХреЗ рдЯреИрдм рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЯреИрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ JSON, Django рдЯреИрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреБрдЫ рд╕реНрд╡рддрдГ рд╣реА рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ:
- рд▓реЛрдб i18n рд╕реЗрдХ
% html
% рд╕рд░
% рдЙрдкрд╛рдзрд┐
- рдмреНрд▓реЙрдХ рд╢реАрд░реНрд╖рдХ
Django рдореЗрдВ рд╕реНрдкреАрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ
% рд╢рд░реАрд░
# menu.page.oldSchool
- рдмреНрд▓реЙрдХ рдореЗрдиреВ
.line.title_bar
.unit.size1of2
% a.site_logo {'href': "/"} Django рдореЗрдВ рддреЗрдЬреА рд╕реЗ рд╡рд┐рдХрд╛рд╕
.unit.size1of2.lastUnit
- 'language_selector.haml' рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
#body
- рдмреНрд▓реЙрдХ рдмреЙрдбреА
рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
{% рд▓реЛрдб i18n рд╕реЗрдХ%}
<Html>
<Head>
<Title>
{% рдмреНрд▓реЙрдХ рд╢реАрд░реНрд╖рдХ%}
Django рдореЗрдВ рд╕реНрдкреАрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ
{% рдПрдВрдбрдмреНрд▓реЙрдХ%}
</ Title>
</ Head>
<Body>
<div id = "menu" class = "page oldSchool">
{% рдмреНрд▓реЙрдХ рдореЗрдиреВ%}
<div class = "line title_bar">
<div class = "unit size1of2">
<a class="site_logo" href="/"> Django рдореЗрдВ рддреЗрдЬрд╝ рд╡рд┐рдХрд╛рд╕ </a>
</ Div>
<div class = "unit size1of2 lastUnit">
{% рдореЗрдВ 'language_selector.haml'% рд╢рд╛рдорд┐рд▓ рд╣реИрдВ}
</ Div>
</ Div>
{% рдПрдВрдбрдмреНрд▓реЙрдХ%}
</ Div>
<div id = "body">
{% рдмреНрд▓реЙрдХ рдмреЙрдбреА%}
{% рдПрдВрдбрдмреНрд▓реЙрдХ%}
</ Div>
</ Body>
</ Html>
рдПрдХ рдмрдВрдж рдЯреИрдЧ рдХреЗ рдХрд╛рд░рдг рдЖрдкрдХрд╛ рд▓реЗрдЖрдЙрдЯ рдХрд┐рддрдиреА рдмрд╛рд░ рдЯреВрдЯ рдЧрдпрд╛? HAML рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдИ рдмрдВрдж рдЯреИрдЧ рдирд╣реАрдВ рд╣реИрдВред рдЯреИрдЧ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЯреИрдм рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╕реНрддрд░ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдФрд░ рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИ - рдЗрд╕рдореЗрдВ 1.5 рдЧреБрдирд╛ рдХрдо рд▓рд╛рдЗрдиреЗрдВ рдФрд░ рдПрдХ рдЪреМрдерд╛рдИ рдХрдо рдкрддреНрд░ рд╣реИрдВред рдкрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рдиреБрдХрд╕рд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП JSON рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛
HamlPy рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХрд░рддреА рд╣реИ , рдЬрд┐рд╕реЗ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, Django рдЯреИрдЧ рдФрд░ рд╕рд╛рджреЗ HTML рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ Haml рдЖрдкрдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
<рд╡рд┐рдХрд▓реНрдк {% рдпрджрд┐ option.selected%} рдЪрдпрдирд┐рдд {% endif%}> {{рд╡рд┐рдХрд▓реНрдк.рд╡рд╛рдпреБ}} </ рд╡рд┐рдХрд▓реНрдк>
Haml CSS рд╕рдордХрдХреНрд╖
Sass рд╣реИ ред рдПрд╕рдПрдПрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ 2 рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рд░реНрдХрдЕрдк рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ: рдПрд╕рд╕реАрдПрд╕рдПрд╕ (рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ) рдФрд░ рдПрд╕рдПрдПрд╕рдПрд╕ (рдЯреИрдм рдХреЗ рд╕рд╛рде рд╣реИрдо рдФрд░ рдкрд╛рдпрдерди рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ)ред рдореИрдВ рдмрд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рд╕реИрд╕ рд╕реЗ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд▓рд╛рдн рд╕рднреА рдорд╛рд▓рд┐рдХрд╛рдирд╛ рдирд┐рдпрдореЛрдВ рдХрд╛ рд╕рдВрдкреАрдбрд╝рди рд╣реИ, рдЬреИрд╕реЗ * -рд▓рд╛рдЗрдирд░-рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ, рдПрдХ рдХреЙрд▓ рдореЗрдВ:
@рдкреЛрд░реНрдЯ рдмреЛрд░реНрдмрди
.action
+ рд▓реАрдирд┐рдпрд░-рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ (рд╢реАрд░реНрд╖, # 6d33f2 0%, # 54a3ee 50%, # 3690f0 51%, # 1e69de 100%)
рдпрд╣ рд╕рднреА рдврд╛рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (-moz -..., -o -..., -webkit- ... рдЖрджрд┐) рдХреЗ рд╕рд╛рде рдПрдХ рдмрдбрд╝реА рд╕реВрдЪреА рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдЧрд╛ред рдореИрдВ рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рджреЗрддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд╕рд╛рд╕ рднрд╛рд╖рд╛ рд▓реВрдкреНрд╕ рдФрд░ рд╕рд╢рд░реНрдд рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ @ рдЕрдЧрд░ ...
рдФрд░ ред рдПрдХ рд╕рдорд╛рди рдХрдо-рд╕реАрдПрд╕рдПрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЗрд╕реЗ
django-рдХрдВрдкреНрд░реЗрд╕рд░ рд╕реЗ рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд▓реВрдк рдЬреИрд╕реЗ рд╣реЗрд░рдлреЗрд░ рдФрд░ рддрд░реНрдХреЛрдВ рдХреЛ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред
рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдореЗрдВ рдШреЛрдВрд╕рд▓рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
.class1
рдлрд╝реЙрдиреНрдЯ-рд╡рдЬрди: рдмреЛрд▓реНрдб
> .class2
рдлрд╝реЙрдиреНрдЯ-рд╢реИрд▓реА: рдЗрдЯреИрд▓рд┐рдХ
рдкрд░рд┐рдгрд╛рдо:
.class1 {
рдлрд╝реЙрдиреНрдЯ-рд╡рдЬрди: рдмреЛрд▓реНрдб; }
.class1> .class2 {
рдлрд╝реЙрдиреНрдЯ-рд╢реИрд▓реА: рдЗрдЯреИрд▓рд┐рдХ; }
рдСрдмреНрдЬреЗрдХреНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрдб рд╕реАрдПрд╕рдПрд╕
рдирд┐рдХреЛрд▓ рд╕реБрд▓рд┐рд╡рди рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЕрджреНрднреБрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рдЙрди рдирд┐рдпрдореЛрдВ рдкрд░ рдЕрдВрдХреБрд╢ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реА рдЬреЛ рдореЛрд▓реНрдб рдХреА рддрд░рд╣ рдмрдврд╝ рд░рд╣реЗ рдереЗ, рд╕рдВрдпреБрдХреНрдд рдФрд░ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рддрдХрдиреАрдХреЛрдВ рдХреЛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рдмрд╣реБрдд рд╣реА рдХреЙрдореНрдкреИрдХреНрдЯ рд▓реЗрдЖрдЙрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред рдпрджрд┐ рдЖрдк OOCSS рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ,
рддреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдЙрд╕рдХреЗ
рднрд╛рд╖рдг (рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ) рдФрд░ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред
рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд░реНрдХрдкреАрд╕ рд╣реИрдВред рддрд╛рд▓рд┐рдХрд╛рдПрдБ (HAML рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ):
.line
.unit.size1of3 рдмрд╛рдПрдВ рдХреЙрд▓рдо
.unit.size1of3 рдХреЗрдВрджреНрд░ рд╕реНрддрдВрдн
.unit.size1of3.lastUnit рд╕рд╣реА рдХреЙрд▓рдо
"рдореАрдбрд┐рдпрд╛ рдмреНрд▓реЙрдХ", рдпрд╛рдиреА рдмрд╛рдИрдВ рддрд░рдл рдХреА рддрд╕реНрд╡реАрд░ рдФрд░ рд╡рд╣ рдЯреЗрдХреНрд╕реНрдЯ рдЬреЛ рджрд╛рдИрдВ рдУрд░ рдХреА рддрд╕реНрд╡реАрд░ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдирд╣реАрдВ рдмрд╣рддрд╛ рд╣реИ:
.media
% img.img {'src': '{{message.author.picture.url}}' '} /
.bd = message.text
рдПрдХ рдЦрд╛рд▓реА рдкреГрд╖реНрда рдЯреЗрдореНрдкрд▓реЗрдЯ, рдХрдВрдЯреЗрдВрдЯ рдмреНрд▓реЙрдХ (рд╣реЗрдбрд░, рдмреЙрдбреА рдФрд░ рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдЖрдпрдд) рднреА рд╣реИред рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, OOCSS рдХреЛ рдПрдХ рдЙрдк-рднрдВрдбрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╕рдордп-рд╕рдордп
рдкрд░ GitHub рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рдХреНрдпрд╛ рдЬреЛрдбрд╝рдирд╛ рд╣реИ
рдЕрдм рддрдХ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рдорд░рдХрд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реИ, рдФрд░ рдЖрдкрдХрд╛ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдмрдВрдзрд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рдЖрдкрдХреЛ hgrc рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рджреЛрд╖ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдХреНрд▓реЛрди рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВред
рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ:
- рд╕реНрдерд┐рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░рд┐рдпреЛрдВ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ: рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ, jQuery рдФрд░ рдмреИрдХрдмреЛрди (рдФрд░ рдЙрдк-рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рднреА)
- рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдЕрджреНрдпрддрди "рдЬреБрдбрд╝рдирд╛рд░" рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдбреАрдмреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рд╕рд┐рдВрдХрдмреЗрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
- TemplateFlakes рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ, рд▓реЛрдб рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЯреИрдЧ
- рдирдореВрдирд╛ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕
- рдкрд░рд┐рд╢рд┐рд╖реНрдЯ : рд▓реЗрдЦ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рд╕реЗ рдкрд╣рд▓реЗ рд▓реЗрдЦрди рд╕реЗ рдПрдХ рд╕рдкреНрддрд╛рд╣, рдмрд┐рди / рдмрд┐рд▓реНрдбрдЖрдЙрдЯ рд╡реЗрдмрдлрд┐рдХреЗрд╢рди рдХрдорд╛рдВрдб рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ WSGI рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЙрд╕реА рдирд╛рдо рдХреА рдореЗрдЬрдмрд╛рдиреА рдкрд░ рдХрд╛рдо рдХрд░реЗред
рдореБрдЭреЗ рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ,
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдХрд╛рдВрдЯрд╛ рдХрд░рдиреЗ, рд╡рд┐рд▓рдп рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдкрд░рд┐рд╢рд┐рд╖реНрдЯ: рдмрдХреЗрдЯрдмрд┐рдЯ рдкрд░
, рдЙрдиреНрд╣реЛрдВрдиреЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ред рдореИрдВ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реВрдВ: рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рддреГрддреАрдп-рдкрдХреНрд╖ рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред SASS, Pyflakes рдФрд░ рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд┐рд▓реНрдбрдЖрдЙрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗред