рднрд╛рдЧ 2: рдЕрд╡рдзрд╛рд░рдгрд╛, рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╕рд░рд▓ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рдПрдкреНрд▓реАрдХреЗрд╢рдирдЪрд░рдг 02: рдЗрдХрд╛рдИ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг
рдмреЗрд╢рдХ, рдкрд░реАрдХреНрд╖рдг рднрд╡рд┐рд╖реНрдп рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддрд╛ рд╣реИред рдФрд░ рдпрд╣, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рд╡рд┐рдХрд╛рд╕ рдХреЛ рддреЗрдЬ рдХрд░рддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реНрдорд╛рд░реНрдЯ рд╕рдВрдкрд╛рджрдХреЛрдВ рдФрд░
рдЖрдИрдбреАрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдФрд░ рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рдПрдХ рдбреНрд░реИрдЧ рд╣реИред
рдпрд╣ рдЪрд░рдг рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЗ рд╕рдорд╛рди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝реЗрдВрдЧреЗред
рд▓рдХреНрд╖реНрдпреЛрдВ
- рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдЯ рдХреЛрдб
- рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдПрдВ
рддрдХрдиреАрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ
- рдПрдХ рдкрд┐рд░рд╛рдорд┐рдб рд╢реИрд▓реА рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗрдВ
- рдкрд░реАрдХреНрд╖рдг рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдЯреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
- рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╛рдХ рдФрд░ рдирд╛рдХ рдХреЗ рджрд░реНрд╢рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЪрд░рдгреЛрдВ
$ cd ../../creatingux; mkdir step02; cd step02
рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБред
рдирдИ рдмрдирд╛рдИ рдЧрдИ рдлрд╝рд╛рдЗрд▓
step02/application.py
рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ:
wsgiref.simple_server рдЖрдпрд╛рдд рдореЗрдХ_рд╕реЗрд╡рд░ рд╕реЗ
рдкрд┐рд░рд╛рдорд┐рдб.рдХреЙрдиреНрдлрд┐рдЧ рдЖрдпрд╛рдд рд╡рд┐рдиреНрдпрд╛рд╕рдХ рд╕реЗ
рдкрд┐рд░рд╛рдорд┐рдб рд╕реЗ ред рдЖрдпрд╛рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ
def hello_world (рдЕрдиреБрд░реЛрдз):
рд╡рд╛рдкрд╕реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ ( 'рд╣реИрд▓реЛ!' )
def рдореБрдЦреНрдп ():
рд╡рд┐рдиреНрдпрд╛рд╕ = рд╡рд┐рдиреНрдпрд╛рд╕рдХрд░реНрддрд╛ ()
рд╡рд┐рдиреНрдпрд╛рд╕ ред add_view (hello_world)
app = config ред make_wsgi_app ()
рд╡рд╛рдкрд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди
рдЕрдЧрд░ __name__ == '__main__' :
рдПрдкреНрд▓рд┐рдХреЗрд╢рди = рдореБрдЦреНрдп ()
рд╕рд░реНрд╡рд░ = make_server ( '0.0.0.0' , 8080 , рдРрдк)
рд╕рд░реНрд╡рд░ ред рд╕реЗрд╡рд╛_рд╕реЗрд╡рд░ ()
рдпрд╣ рд╡рд╣реА рдХреЛрдб рд╣реИ рдЬреЛ рд╣рдордиреЗ рдЪрд░рдг рдПрдХ рдореЗрдВ рджреЗрдЦрд╛ рдерд╛ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ
step02/tests.py
рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ:
рдЖрдпрд╛рдд unittest
рдХреНрд▓рд╛рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд░ рд╡реНрдпреВрдпреВрдирд╛рдЗрдЯрд┐рдЯреНрд╕ (рдпреВрдиреАрдЯреЗрд╕реНрдЯ ред рдЯреЗрд╕реНрдЯрдХреИрд╕реЗ):
def test_hello_world ( рд╕реНрд╡ ):
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЖрдпрд╛рдд hello_world рд╕реЗ
рдкрд░рд┐рдгрд╛рдо = hello_world ({})
рд╕реНрд╡ ред рдореБрдЦрд░ (рдкрд░рд┐рдгрд╛рдо ред рд╢рд░реАрд░, 'рд╣реИрд▓реЛ!' )
рд╡рд░реНрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд░рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ (unittest ред TestCase):
рдбреАрдИрдПрдлрд╝ рд╕реЗрдЯрдЕрдк ( рд╕реНрд╡ ):
рдЖрд╡реЗрджрди рдЖрдпрд╛рдд рд╕реЗ рдореБрдЦреНрдп
рдПрдкреНрд▓рд┐рдХреЗрд╢рди = рдореБрдЦреНрдп ()
Webtest import TestApp рд╕реЗ
рд╕реНрд╡ ред testapp = TestApp (рдРрдк)
def test_it ( рд╕реНрд╡ ):
res = рд╕реНрд╡ ред рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ ред рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ( '/' , рд╕реНрдерд┐рддрд┐ = 200 )
рд╕реНрд╡ ред рдЕрд╕рдлрд▓ (рдмрд┐рдирд╛ ' res ' рд╢рд░реАрд░ рдореЗрдВ)
$ nosetests
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
..
--------------------------------------------------------
Ran 2 tests in 0.301s
OK
рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢реНрди
- рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ?
- рдХреНрдпрд╛ рд╡реЗрдмрдЯреЗрд╕реНрдЯ рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ HTTP рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ?
- рдпрджрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдкрд┐рд░рд╛рдорд┐рдб рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ?
рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХрдард┐рди рд╣реИрдВред рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдФрд░ рднреА рдЬрдЯрд┐рд▓ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкрд┐рд░рд╛рдорд┐рдб рд╕рдВрд╕реНрдХреГрддрд┐ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рдФрд░ рд▓реЗрдЦрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЙрдкрдпреЛрдЧреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рд░рд╛рдорд┐рдб рдмрд╣реБрдд рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдХрд╡рд░реЗрдЬ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдорд╛рдирдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рддреЗрдЬреА рд╕реЗ рдкрдХрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЗ рд╕рдВрдкрд╛рджрдХ, рдпрд╛ IDE рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд┐рдЯ рдХреА рддрд░рд╣ рд╣реИ,
рдкрд╛рдЗрд▓рд┐рдВрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдкрдХреЛ рдмрдЪрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ (рдпрджрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрд╣реБрдд рдХрдо рд╣реИ) рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИред
рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рдпреВрдПрдХреНрд╕ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рд╡реЗ рд╕рдорд╕реНрдпрд╛ рдХреЗ рднрд╛рдЧ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХреЗ рддрд╣рдд рдорджрдж рдХрд░рддреЗ рд╣реИрдВред
рд╢реЛрдз рдХрд░реЗ
- рдкрд┐рд░рд╛рдорд┐рдб (рдФрд░ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ repoze.bfg) рдФрд░ рдХрд╡рд░реЗрдЬ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдард╛
- рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЦрд┐рд▓рд╛рдл рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рджрд░реНрд╢рди, рдЧреЛрджреА рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЦрд┐рд▓рд╛рдл
- рд╕рддрд╣ рдХреЗ рдиреАрдЪреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рд░рдЬрд┐рд╕реНрдЯреНрд░рд┐рдпреЛрдВ рдФрд░ рдорд╢реАрдирд░реА рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕реЗрдЯрдЕрдк / рдлрд╛рдбрд╝ рдореЗрдВ рдЪреБрдиреМрддреА (рджреЛрдиреЛрдВ рд░реВрдкрд░реЗрдЦрд╛ рдФрд░ рддреБрдореНрд╣рд╛рд░рд╛!)
рдЪрд░рдг 03: рдЧрд┐рд░рдЧрд┐рдЯ рдореЗрдВ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб
рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реЗрдм рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ HTML рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рднрд╛рд╖рд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдпреВрдПрдХреНрд╕-рдореИрди рдХреЛ рдЙрд╕ рдЪреАрдЬрд╝ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╡реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ (рдорд╛рд░реНрдХрдЕрдк) рдФрд░ рдХреЛрдб рдореЗрдВ рдЗрдВрдЯрд░рд╕реЗрдкреНрдб рд╣реИрдВ, рди рдХрд┐ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред
рдкрд┐рд░рд╛рдорд┐рдб рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд░рд╛рдп рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЧрд┐рд░рдЧрд┐рдЯ / ZPT рд▓реЛрдЧ рд╣реИрдВред рддреЛ рдЪрд▓рд┐рдП рдкреЗрдЬ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рдмрдирд╛рддреЗ рд╣реИрдВред
рд▓рдХреНрд╖реНрдпреЛрдВ
- рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╕рдВрднрд╡ рдХрджрдо
рд╕рдВрджрд░реНрдн рдХреА рд╢рд░реНрддреЗрдВ
- рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рджреЗрдЦреЗрдВ
- рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдерд┐рдВрдХрдкреИрдб рдмрджрд▓реЗрдВ
- рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдкрд╛рджрди рдФрд░ рдбреЗрдЯрд╛-рдЙрдиреНрдореБрдЦ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рддрд╛рдЬрдЧреА рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВ
- рдбреЗрдЯрд╛ рдЙрдиреНрдореБрдЦ рдорд╛рдирд╕рд┐рдХрддрд╛ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓рд╛рдУ
рдЪрд░рдгреЛрдВ
рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реЗрдХреНрд╢рди
$ export PYRAMID_RELOAD_TEMPLATES=1
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рдкрд┐рд░рд╛рдорд┐рдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
$ cd ../../creatingux; mkdir step03; cd step03
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ
step03/application.py
рдХреЙрдкреА рдХрд░реЗрдВ:
wsgiref.simple_server рдЖрдпрд╛рдд рдореЗрдХ_рд╕реЗрд╡рд░ рд╕реЗ
рдкрд┐рд░рд╛рдорд┐рдб.рдХреЙрдиреНрдлрд┐рдЧ рдЖрдпрд╛рдд рд╡рд┐рдиреНрдпрд╛рд╕рдХ рд╕реЗ
def рдореБрдЦреНрдп ():
рд╡рд┐рдиреНрдпрд╛рд╕ = рд╡рд┐рдиреНрдпрд╛рд╕рдХрд░реНрддрд╛ ()
рд╡рд┐рдиреНрдпрд╛рд╕ ред рд╕реНрдХреИрди ( "рд╡рд┐рдЪрд╛рд░" )
app = config ред make_wsgi_app ()
рд╡рд╛рдкрд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди
рдЕрдЧрд░ __name__ == '__main__' :
рдПрдкреНрд▓рд┐рдХреЗрд╢рди = рдореБрдЦреНрдп ()
рд╕рд░реНрд╡рд░ = make_server ( '0.0.0.0' , 8080 , рдРрдк)
рд╕рд░реНрд╡рд░ ред рд╕реЗрд╡рд╛_рд╕реЗрд╡рд░ ()
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ
step03/views.py
рдХреЙрдкреА рдХрд░реЗрдВ:
рдкрд┐рд░рд╛рдорд┐рдб рд╕реЗ.рд╡реНрдпреВ рдЖрдпрд╛рдд view_config
@view_config (рд░реЗрдВрдбрд░рд░ = "hello.pt" )
def hello_view (рдЕрдиреБрд░реЛрдз):
рд╡рд╛рдкрд╕реА { "рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓" : "рд▓рд┐рдЯрд┐рд▓ рдбрдореА" }
рдФрд░ рдЖрдЧреЗ,
step03/hello.pt
рдореЗрдВ HTML рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдорд╛рд░реНрдХрдЕрдк
step03/hello.pt
:
<Html>
<Head>
<рд╢реАрд░реНрд╖рдХ> рдирдорд╕реНрддреЗ </ рд╢реАрд░реНрд╖рдХ>
</ Head>
<Body>
<p> рд╣реИрд▓реЛ, $ {рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓} </ p>
</ Body>
</ Html>
рдФрд░ рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ -
step03/tests.py
:
рдЖрдпрд╛рдд unittest
рдХреНрд▓рд╛рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд░ рд╡реНрдпреВрдпреВрдирд╛рдЗрдЯрд┐рдЯреНрд╕ (рдпреВрдиреАрдЯреЗрд╕реНрдЯ ред рдЯреЗрд╕реНрдЯрдХреИрд╕реЗ):
def test_hello_view ( рд╕реНрд╡ ):
рджреГрд╢реНрдп рдЖрдпрд╛рдд рд╕реЗ hello_view
рдкрд░рд┐рдгрд╛рдо = hello_view ({})
рд╕реНрд╡ ред рдореБрдЦрд░ (рдкрд░рд┐рдгрд╛рдо [ 'рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓' ], 'рд▓рд┐рдЯрд┐рд▓ рдбрдореА' )
рд╡рд░реНрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд░рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ (unittest ред TestCase):
рдбреАрдИрдПрдлрд╝ рд╕реЗрдЯрдЕрдк ( рд╕реНрд╡ ):
рдЖрд╡реЗрджрди рдЖрдпрд╛рдд рд╕реЗ рдореБрдЦреНрдп
рдПрдкреНрд▓рд┐рдХреЗрд╢рди = рдореБрдЦреНрдп ()
Webtest import TestApp рд╕реЗ
рд╕реНрд╡ ред testapp = TestApp (рдРрдк)
def test_it ( рд╕реНрд╡ ):
res = рд╕реНрд╡ ред рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ ред рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ( '/' , рд╕реНрдерд┐рддрд┐ = 200 )
рд╕реНрд╡ ред рдЕрд╕рдлрд▓ (рдмрд┐рдирд╛ 'рдирдорд╕реНрддреЗ' рд░реЗрд╕ рд╢рд░реАрд░ рдореЗрдВ)
рдФрд░ рдЕрдВрддрд┐рдо, рд▓рд┐рдЦреЗрдВ:
$ nosetests
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
..
----------------------------------------------------------------
Ran 2 tests in 0.885s
OK
рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ:
$ python application.py
рдФрд░ рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ
127.0.0.1:8080
рдЦреЛрд▓реЗрдВред
рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢реНрди
рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдереАрдо рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
@View_config рдкрд░ рд░реЗрдВрдбрд░рд░ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреМрди рд╕реЗ рдореВрд▓реНрдп рд╕рдВрднрд╡ рд╣реИрдВ?
рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдпрд╣ рдЪрд░рдг рдХреЛрдб рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдореЗрдВ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкрд┐рд░рд╛рдорд┐рдб рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╣реИрдВ: рдЕрдирд┐рд╡рд╛рд░реНрдпрддрд╛ (рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рджреЗрдЦрд╛ рдерд╛: рдкрд┐рд░рд╛рдорд┐рдб рдореЗрдВ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб), рд╕реНрдХреИрдирд┐рдВрдЧ (рдХрдИ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдХрд░реАрдм), рдФрд░ рд╣рдорд╛рд░реЗ рдкреБрд░рд╛рдиреЗ рджреЛрд╕реНрдд ZCMLред рдкрд╕рдВрдж рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╢реИрд▓реА рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреБрдЫ рддреЗрдЬ рдзрд╛рд░ рд╣реИрдВред
рд╢реАрддрд▓рддрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ ... рдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рдЕрдкрдиреЗ рджреГрд╢реНрдп рдореЗрдВ рд▓реМрдЯрд╛ рджреЗрдВ, рдФрд░ рдЖрдкрдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рджрд░рд╡рд╛рдЬреЗ рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рдиреЗ рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╢реЛрдз рдХрд░реЗ
рдЬрд╝реЛрдк 2, рдЬрд╝реЛрдк 3, рдмреАрдПрдлрдЬреА, рдлрд┐рд░ рдкрд┐рд░рд╛рдорд┐рдб рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕
рд░реЗрдВрдбрд░рд░реНрд╕ рд╕реЗ рдкрд╣рд▓реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛
рдЕрдЧрд▓рд╛
рднрд╛рдЧ 4 рдЖрддрд╛ рд╣реИред