рднрд╛рдЧ 1рднрд╛рдЧ реирдкрд░рд┐рдЪрдпред
рдпрд╣ рд▓реЗрдЦ рдПрдХ wsgi рдЖрд╡реЗрджрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ред рд╣рдо рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рд▓рд┐рдЦрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдорд╛рдЗрдХреНрд░реЛрдлреНрд░реЗрдо рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдмрдбрд╝реЗ рд▓реЛрдЧреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рдирд╛ред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЛрддрд▓ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдзрд┐рдХрддрд░ рдЗрд╕рдХреЗ рдЕрддрд┐рд╕реВрдХреНрд╖реНрдорд╡рд╛рдж рдХреЗ рд▓рд┐рдПред рд╣рдо рдорд╛рд░реНрдЧреЛрдВ, рд╕реНрдЯреЗрдЯрд┐рдХреНрд╕ рдФрд░ рд╕рддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдмреАрдХрд░ рдкреНрд░рдмрдВрдзрди рдХрд░реЗрдВрдЧреЗред
рдбрд┐рдмрдЧрд┐рдВрдЧ
рдорд╛рдЗрдХреНрд░реЛрдлреНрд░реЗрдо рдХреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ, рддреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЬреЛ wsgi рд╣рдореЗрдВ рджреЗрддреА рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд▓реЙрдЧ рдореЗрдВ рдкрдХрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреГрд╖реНрда рдкрд░ рдпрд╣ рд╕рдм рджреЗрдЦрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ, рдпрд╛ рдЗрд╕рдХреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреБрдЫ рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рдПрдХ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рдПрдВрдЧреЗред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмрд╕ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдПрдХреАрдХреГрдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЙрди рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрдВрдЧреЗ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рдкрдХрдбрд╝рддреЗ рдереЗ, рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕реБрдВрджрд░ рд░реВрдк рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рдХреЗ рд░реВрдк рдореЗрдВ рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВред
try:
рд╡рд╣ рд╡рд░реНрдЧ рдЬреЛ рд╕реАрдзреЗ рд╣рдорд╛рд░реЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреА рд╕реЗрд╡рд╛ рдХрд░рддрд╛ рд╣реИред
class DebuggerM(object): """ """ __app = None def __init__ (self, app):
рд╕рдорд╛рд░реЛрд╣ рд╣реА рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рддреНрд░реБрдЯрд┐ рдЦреАрдВрдЪрддрд╛ рд╣реИ:
def view_error(exc, environ, e): import cgi, traceback ee = dict(environ) text= '' text='<h1>ERROR "%s"</h1>' % str(e) text+='<style>pre{border:red solid 1px; max-height:240px; overflow:auto;}</style>' text+='<h2>Stack trace</h2><pre>%s</pre>' % ''.join(reversed(traceback.format_exception(*exc))) text+='<h2>Env</h2><pre">%s </pre>' % ' '.join(['%s=%s' %(k, ee[k])for k in ee]) text+='</pre>' return text
рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рдЬрд╛рд╡рдЯрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдмреВрдЯ рдореЗрдВ рдорд╛рд░реНрдЧ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЭреБрдХрд╛ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
@route('/hello/:name') def index(name='World'): return '<b>Hello %s</b>' % name
рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдФрд░ рд╣рдо рдЗрд╕ рдХреНрд╖рдг рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХрд┐рд╕реА рднреА рдШрдЯрдХ рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛред
from app1 import * routes = { 'function': ('/hello/', hello, 'GET'), 'function2':('/hello/<_id>', hello_post, 'POST') }
рддрджрдиреБрд╕рд╛рд░, рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдШрдЯрдХ рдореЗрдВ рдХрд╣реАрдВ рднреА рд╣реИрд▓реЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦреЗрдВ рдЬрд┐рд╕рдореЗрдВ рдХрд░реНрдиреЗрд▓ рдХреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИред
all_routes = {} def union_routes(dir): routes = {}
рдЕрдм рд╣рдо рдЙрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЬрдЧрд╣ рд▓реЗрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рд░реВрдЯ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдВрдЧ рдкрд░ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдерд╛, рддрд╛рдХрд┐ рд╡реЗ рддреБрд░рдВрдд рд╣рдорд╕реЗ рдЬреБрдбрд╝реЗ рд░рд╣реЗрдВред
routes = {}
рдЕрдм рд╣рдо рд╕рднреА рдХреЗ рдкрд╛рд╕ рдкреВрд░реНрдг-рд╡рд┐рдХрд╕рд┐рдд рдорд╛рд░реНрдЧ рд╣реИрдВ, рд╣рдо рдЪрд╛рд╣реЗрдВ рддреЛ рдбреЗрдХреЛрд░реЗрдЯрд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдорд╛рд░реНрдЧ рдореЗрдВ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реМрдВрдкреЗ рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдорд╛рд░реНрдЧреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджрд░реНрдЬ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗред
from app1 import * routes = { 'function2': ('/hello/<_id>', hello_post, 'POST'), 'function3': ('/base/1', lambda: test(True, u''), 'GET') }
рдЕрдм рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдорд╛рд░реНрдЧреЛрдВ рдХреА рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, 'function2', рд╣рдо рд░реВрдЯ рдХреЗ рдирд╛рдо рд╕реЗ рд▓рд┐рдВрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдмрд┐рдирд╛ рдпрд╣ рдЬрд╛рдиреЗ рдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд▓рд┐рдВрдХ рд╕реЗ рд╣реА рдХреИрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо '/ hello / <_id' рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ <_id> рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
def make_link(name, params, full=False): """ <> """
рдЕрдм рд╣рдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдпрд╛ рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рднреА рд▓рд┐рдЦрддреЗ рд╣реИрдВ
link = make_link('test', {'id':id, 'doc_id':doc_id}, True)
рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЕрдХреНрд╕рд░ рдХреЗрд╡рд▓ рдПрдХ рд▓рд┐рдВрдХ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЖрдк рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рд╕рддреНрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рд╕рддреНрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдПрдХ рдмреАрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдЕрджреНрднреБрдд рдореЙрдбреНрдпреВрд▓ рд╕рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдЪрдпрдирд┐рдд рдлрд╝реЛрд▓реНрдбрд░ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреЛрд╕реНрдЯрдЧреНрд░реИрд╕реНрдХрд▓ рдпрд╛ рдореЗрдордХреЗрдЪреНрдб рдореЗрдВред рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рд╣рдо рдХрд░реЗрдВрдЧреЗ рд╡рд╣ рд╣реИ рдЖрдпрд╛рдд:
from beaker.middleware import SessionMiddleware
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рдЖрд░рдВрдн рд╣реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдЖрд░рдВрднреАрдХрд░рдг рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
options_session = { 'session.cookie_expires': 30000, 'session.timeout': 30000, 'session.type': 'file',
рдФрд░ рдкреНрд░реА_рдЗрдирд┐рдЯ () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдбрд╛рдпрдиреЗрдорд┐рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕ рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╕рддреНрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
session.options['session.cookie_domain'] = get_name_host()
get_name_host () - рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдХрд╛ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрд╛ рд╣реБрдЖ рд╣реИред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рднреА рдХреА рдЬрд░реВрд░рдд рд╣реИ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рд╕рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
def session():
рдЕрдм рдХрд╣реАрдВ рднреА:
s = session() s['test'] = '123' s.save()
рд╕реНрдерд┐рддрд┐-рд╡рд┐рдЬреНрдЮрд╛рди
рдмреЛрддрд▓ рднреА рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдореЗрдВ рд▓рдЧреЗрдЧреА, рдХреЗрд╡рд▓ рд╣рдо, рдмрджрд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рдЕрдм рдпрд╣ рд╕реАрдЦрдирд╛ рдмрд╛рдХреА рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореЙрдбреНрдпреВрд▓ рдРрд╕рд╛ рд╣реЛ рддреЛ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реИ, рдЕрдЧрд░ рдРрд╕рд╛ рдХреЛрдИ рдореЙрдбреНрдпреВрд▓ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдореБрдЦреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╕рднреА рдЕрдВрдзрд╛рдзреБрдВрдз рдирд╣реАрдВ рд╣реИрдВред
def add_resourse(name, append=True): env = get_environment(); t = '' if name.endswith('.css'): t = 'css' if name.endswith('.js'): t = 'js' if not t: return if not name in env['res_list'][t]: if append: env['res_list'][t].append(name) else: env['res_list'][t].prepend(name)
рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд┐рд╕реА рднреА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рд╣реА рд░рд╛рд╕реНрддрд╛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ '/ рд╕реНрдерд┐рд░ / <рдШрдЯрдХ> / <рдирд╛рдо: рдкреБрдирдГред *>> рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ:
add_resourse(/static/base/base.js, True)
рдФрд░ рдореБрдЦреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ, рд╣рдо рдмрд╕ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ:
{% for res in env.res_list['js'] %} <script type="text/javascript" src="{{res}}"></script> {% endfor %} {% for res in env.res_list['css'] %} <link rel="stylesheet" type="text/css" href="{{res}}" /> {% endfor %}
рдирдорд╕реНрддреЗ рджреБрдирд┐рдпрд╛
рдЕрдм рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдирдорд╕реНрддреЗ рджреБрдирд┐рдпрд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред
рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ / реирежрезрем рдХреЗ рд░реВрдЯ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд░рдЦреЗрдВрдЧреЗред
from app.app_one.view import * routes = { 'hello': ('/', hello, 'GET') }
рд╣рдо рдирдЬрд╝рджреАрдХреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд╕ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣рд╛рдБ рдирд╛рдо рддрд░реНрдХ рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ:
def hello(): text = 'It works' return templ('hello', text=text)
рдФрд░ рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ / templ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣рдордиреЗ hello.tpl рдирд╛рдордХ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд░рдЦрд╛ рд╣реИред
{{text}}
рд╣рдо рд╕рднреА рд╕рд╛рдЗрдЯ рдХреА рдЬрдбрд╝ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЧреНрд░реАрдЯрд┐рдВрдЧ рджреЗрдЦрддреЗ рд╣реИрдВред
рд╕рд╛рд░рд╛рдВрд╢
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЦреНрдп рдлреНрд░реЗрдо рддреИрдпрд╛рд░ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреБрдЫ рдЕрдВрд╢, рдПрдХ рдбрд┐рдЧреНрд░реА рдпрд╛ рджреВрд╕рд░реЗ рддрдХ, рдЗрд╕ рдкрд╛рда рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╣рдордиреЗ рдЬреЛ рдЬрд╛рдВрдЪ рдХреА рдереА, рдЙрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЛ рджреЗрдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд▓рд╛ рднрд╛рдЧ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдбреЗрдЯрд╛ рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрдЧрд╛ред
рдЕрднреА рдХреЗ рд▓рд┐рдП рдмрд╕ рдЗрддрдирд╛ рд╣реАред рд╕рднреА рд╕рдлрд▓рддрд╛ред
рдкреНрд░рдпреБрдХреНрдд рдФрд░ рдЙрдкрдпреЛрдЧреА рд╕рд╛рдордЧреНрд░реА
рдмреЛрддрд▓рдмреАрдХрд░ рдФрд░ рдХреИрд╢рд┐рдВрдЧрдмреАрдХрд░рдЕрдЬрдЧрд░ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдХрд╛ рдкрд░рд┐рдЪрдпрдкрд╛рдпрдерди рд╡реЗрдм рд╕рд░реНрд╡рд░ рдЧреЗрдЯрд╡реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕