1.模板渲染
import tornado. ioloop
import tornado. web
class MainHandler ( tornado. web. RequestHandler) :
def get ( self) :
self. write( "<h1>Hello World</h1>" )
class TemHandler ( tornado. web. RequestHandler) :
def get ( self) :
self. render( 'index.html' )
def post ( self) :
username = self. get_argument( 'username' , '没有' )
usernames = self. get_arguments( 'username' )
password = self. get_argument( 'password' , '没有' )
print ( username)
print ( usernames)
print ( password)
self. write( '登录成功' )
class ErrorHandler ( tornado. web. RequestHandler) :
def get ( self) :
self. write_error( 404 )
def write_error ( self, status_code: int , ** kwargs) :
self. render( '404.html' )
def make_app ( ) :
return tornado. web. Application( [
( r"/" , MainHandler) ,
( r"/t" , TemHandler) ,
( r"/.*" , ErrorHandler) ,
] ,
debug= True ,
template_path= '../template' ,
)
if __name__ == "__main__" :
app = make_app( )
app. listen( 8888 )
tornado. ioloop. IOLoop. current( ) . start( )
2.路径参数、关键字参数
import tornado. ioloop
import tornado. web
class MainHandler ( tornado. web. RequestHandler) :
def get ( self) :
self. write( "<h1>hello world</h1>" )
class RedHandler ( tornado. web. RequestHandler) :
def get ( self) :
self. redirect( '/' )
class StaticHandler ( tornado. web. RequestHandler) :
def get ( self) :
self. render( 'test.html' )
class PAttrHandler ( tornado. web. RequestHandler) :
def get ( self, age, name) :
self. write( '年龄:{} 姓名:{}' . format ( age, name) )
class TesHandler ( tornado. web. RequestHandler) :
def get ( self) :
name = '小红'
age = 20
hobby = [ '吃' , '睡' , '逛街' ]
data = {
'name' : name,
'age' : age,
'hobby' : hobby,
}
self. render( 'key.html' , ** data)
class KeyHandler ( tornado. web. RequestHandler) :
def get ( self) :
age = self. get_argument( 'age' )
name = self. get_argument( 'name' )
self. write( '年龄:{} 姓名:{}' . format ( age, name) )
def make_app ( ) :
return tornado. web. Application( [
( r"/" , MainHandler) ,
( r"/r" , RedHandler) ,
( r"/s" , StaticHandler) ,
( r"/t" , TesHandler) ,
( r"/k" , KeyHandler) ,
( r"/p/(\d*)/(.*)" , PAttrHandler) ,
] ,
debug= True ,
static_path= '../static' ,
template_path= '../template' ,
)
if __name__ == "__main__" :
app = make_app( )
app. listen( 8888 )
tornado. ioloop. IOLoop. current( ) . start( )
3.前端页面
< !DOCTYPE html>
< html lang= "en" >
< head>
< meta charset= "UTF-8" >
< title> Title< / title>
< link rel= "stylesheet" href= "{{ static_url('css/test.css') }}" >
< / head>
< body>
< h1> 静态文件< / h1>
< img src= "{{ static_url('images/4.jpg') }}" alt= "" >
< script src= "{{ static_url('js/test.js') }}" > < / script>
< / body>
< / html>
< !DOCTYPE html>
< html lang= "en" >
< head>
< meta charset= "UTF-8" >
< title> Title< / title>
< / head>
< body>
< h1> 姓名:{ { name } } < / h1>
< h1> 年龄:{ { age } } < / h1>
< h1> 爱好:< / h1>
< ul>
{ % for i in hobby % }
< li> { { i } } < / li>
{ % end % }
< / ul>
< hr>
{ % for key in dict % }
< li> { { key } } < / li>
{ % end % }
< hr>
{ % for value in dict . values( ) % }
< li> { { value } } < / li>
{ % end % }
![ 在这里插入图片描述] ( https: // img2020. cnblogs. com/ blog/ 1948732 / 202005 / 1948732 - 20200510171245938 - 744492459. png)
< hr>
{ % if name % }
欢迎{ { name } }
{ % else % }
游客
{ % end % }
< br>
< a href= "/k?age={{ age }}&name={{ name }}" > 跳转页面< / a>
< / body>
< / html>
4.运行效果图