рд▓рд╛рдЗрдЯрд╡реЗрдЯ рдЕрдЬрдЧрд░ рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХ: рдмреЛрддрд▓

рдкрд░рд┐рдЪрдп



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



рд╕реНрдерд╛рдкрдирд╛



рдмреЛрддрд▓ рдПрдХ рдмрд╣реБрдд рд╣реА рд╣рд▓реНрдХрд╛ рдврд╛рдВрдЪрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ - рдмреЙрдЯрд▓рд╣реЛрдо рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдВ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рдпрд╛ рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдмреЛрддрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред



рдЕрд╡рд╕рд░реЛрдВ



рдЗрд╕рдХреА рдЕрддрд┐рд╕реВрдХреНрд╖реНрдорд╡рд╛рдж рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдмреЛрддрд▓ рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдЬреЛ рдЫреЛрдЯреЗ рдФрд░ рдордзреНрдпрдо рдЖрдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП 100% рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред рдпрд╣рд╛рдБ рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ:



рд░реВрдЯрд┐рдВрдЧ


рдмреЛрддрд▓ рдореЗрдВ рд░реВрдЯрд┐рдВрдЧ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдЬрдЧрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдбреЗрдХреЛрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

@route('/hello/<name>') def index(name): return name
      
      





рдЖрдк рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбрд╛рдпрдиреЗрдорд┐рдХ url рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 @route('/news/<number:re:[0-9]*>') def show_news(number): pass
      
      





рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕


рдврд╛рдВрдЪреЗ рдХреА рддрд╛рдХрдд рдореЗрдВ рд╕реЗ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рд╣реИред рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЗрддрдирд╛ рд╣рд▓реНрдХрд╛ рдирд┐рд░реНрдорд╛рдг рд▓рд┐рдЦреЗрдВ:

 template('template_name', name=name, number=number, foo=bar)
      
      





рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реНрдХ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЯреЗрдХреНрд╕реНрдЯ рд╣реЛрддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ template_name.txt рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛)ред

рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реА, рд╣рдореЗрдВ рдЪрд░ рдХрд╛ рдирд╛рдо рджреЛ рдШреБрдВрдШрд░рд╛рд▓реЗ рдХреЛрд╖реНрдардХ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 Hello, {{name}}, glad to see you!
      
      





рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдЗрд╕рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ html рдХреЛрдб рдХреЛрд╖реНрдардХ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддрд╛рдХрд┐ RSS рдХреЗ рд╣рдорд▓реЛрдВ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХреЗред рдЕрдЧрд░ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк {{рдирд╛рдо!}} рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдмреЛрддрд▓ рд╣рдореЗрдВ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛ рднреА рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ: рдХрд┐рд╕реА рднреА рдЕрдЬрдЧрд░ рдХреЛрдб рдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЕрдВрджрд░ рд▓рд┐рдЦреЗрдВред рдЕрдЬрдЧрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рд▓рд╛рдЗрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ% рдбрд╛рд▓реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 %a = 100500 %for i in xrange(a): <div class="image_{{i}}"><img src="......{{i}}.jpg"></div> %end
      
      





рдЖрдк рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рднреА рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдФрд░ рдмрдбрд╝реЗ рдХрд░реАрдиреЗ рд╕реЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

 %include template_num2 foo=bar, blabla=qweqwe
      
      





рдкреЛрд╕реНрдЯ-рд░рд╛рдЙрдЯрд┐рдВрдЧ рдФрд░ рдлреЙрд░реНрдо рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ


рд░реВрдкреЛрдВ рдХреЗ рдмрд╛рдж рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде POST рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдмрд┐рдирд╛ рдХреНрдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рдврд╛рдВрдЪрд╛ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

POST рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рддрдВрддреНрд░ GET рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рд╣реИ, рдмрд╕ рд╢рдмреНрдж рдорд╛рд░реНрдЧ рдХреЛ рдкреЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 @post("/url") def foo(): pass
      
      





рд░реВрдкреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, "рдирд╛рдо" рдлрд╝реАрд▓реНрдб рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 <input name="age" placeholder="">
      
      





рдкреНрд░рдкрддреНрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 request.forms.get("age") #     age request.forms.getall("age") #     age
      
      





рдЖрдк рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рднреА рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ:

 request.files.get("picture") #      picture request.files.getall("picture") #      (mult-upload)
      
      





рдХреБрдХреАрдЬрд╝


рдХреБрдХреА рдХреЛ рдХреБрдХреА рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ:

 response.set_cookie("name", value, max_age=100500)
      
      





рдорд╛рди рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП:

 request.get_cookie("name")
      
      





рд╕рд░реНрд╡рд░


рдПрдХ рд╕рд╛рдзрд╛рд░рдг http рд╕рд░реНрд╡рд░ рдХреЛ рдмреЛрддрд▓ рдореЗрдВ рд╕рд┐рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдкреГрд╖реНрда рдХреЗ рдмрд╣реБрдд рд╣реА рддреНрд╡рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ:

 run(host='localhost', port=8080)
      
      





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

  1. рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдПрдбреЗрдкреНрдЯрд╡рд░реНрдЧреА рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ
    рд╕реНрдкреЙрдЗрд▓рд░
     import sys, os, bottle sys.path.append(os.path.dirname(os.path.abspath(__file__))) os.chdir(os.path.dirname(os.path.abspath(__file__))) import index #   application = bottle.default_app()
          
          





  2. рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ mod_wsgi рд╕рдХреНрд╖рдо рдХрд░реЗрдВ
  3. рд╡рд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЬреЛрдбрд╝реЗрдВ
    рд╕реНрдкреЙрдЗрд▓рд░
     <VirtualHost *:80> DocumentRoot /var/www/foo </VirtualHost> <Directory /var/www/foo> Options FollowSymLinks ExecCGI AddHandler wsgi-script .wsgi Order allow,deny AllowOverride All Allow from all </Directory>
          
          









рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддрд┐рдпрд╛рдБ рдФрд░ рдЙрдирдХреЗ рд╕рдорд╛рдзрд╛рди





рдирд┐рд╖реНрдХрд░реНрд╖



рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдПрдХ рдкреЛрд╕реНрдЯ рдореЗрдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдлрд┐рдЯ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рд▓рд┐рдЦреА рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдмреЛрддрд▓ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИрдВ , рдЗрд╕рд▓рд┐рдП рдЬрд╛рдУ рдФрд░ рдкрдврд╝реЛред рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рд╣реИ!



All Articles