当前位置: 首页 > news >正文

php动态网站怎么做的如何注册网站平台

php动态网站怎么做的,如何注册网站平台,网站seo方案策划书,四海网络网站建设建站输出write可接受对象类型字符串二进制字符串b字典Unicodejson flush缓冲区render 返回htmlredirect 跳转路由finish() 获取请求信息self.requestself.request可以获取到的请求信息 输入get_argument get_arguments获取 URL 数据获取 body 数据 get_query_argumentget_body_arg…

  • 输出
    • write可接受对象类型
      • 字符串
      • 二进制字符串b
      • 字典
      • Unicode
      • json
    • flush
    • 缓冲区
    • render 返回html
    • redirect 跳转路由
    • finish()
  • 获取请求信息
    • self.request
      • self.request可以获取到的请求信息
  • 输入
    • get_argument get_arguments
      • 获取 URL 数据
      • 获取 body 数据
    • get_query_argument
    • get_body_argument
  • url传参
    • 查询字符串风格
    • REST风格


输出

write可接受对象类型

write 把字符串输出到浏览器

write 并没有直接把数据返回给前端,而是先写到缓存区,函数结束之后才会返回到前端

字符串

class MainHandler(tornado.web.RequestHandler):def get(self):self.write("Hello tanzhou")

二进制字符串b

class MainHandler(tornado.web.RequestHandler):def get(self):self.write(b'Tornado <br>')
Tornado

字典

user = {'name': 'budong','age': 18
}
self.write(user)
{"age": 18, "name": "budong"}
self.write('hello world!!!!')
self.write('<br>')
self.write('hello)Response Header  : Content-Type: text/html;
hello world!!!!
hello

如果接受的是字典,会把响应头Response Header 设置为json , 传送的字典当成 JSON格式数据 处理

def get(self):self.write('hello world!!!!')self.write('<br>')self.write({'name': 'w', 'age': 18})输出字典 Response HeaderContent-Type: application/json;
hello world!!!!<br>hello<br>{"age": 18, "name": "w"}

Unicode

self.write('<b>Tornado1</b><br>')
Tornado1(加粗的)

json

li = [1, 2, 3, 4]
import json
li = json.dumps(li)
self.write(li)
print(repr(li))
li = json.loads(li)
print(repr(li))

write

[1,2,3,4]

print

'[1,2,3,4]'
[1,2,3,4]

flush

把缓冲区的内容发送到客户端

class MainHandler(tornado.web.RequestHandler):def get(self):self.write('hello<br>')time.sleep(3)self.write('<b>Tornado</b><br>')

3秒后输出hello Tornado 到屏幕

class MainHandler(tornado.web.RequestHandler):def get(self):self.write('hello<br>')self.write('<b>Tornado</b><br>')time.sleep(3)self.write({'name':'wu'})
class MainHandler(tornado.web.RequestHandler):def get(self):self.write('hello<br>')self.write('<b>Tornado</b><br>')self.flush()time.sleep(3)self.write({'name':'wu'})

先输出hello 3秒后输出Tornado到屏幕

class MainHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):self.write('hello <br>')self.write(b'Tornado<br>')time.sleep(3)self.write({'name': 'wu'})

3秒后显示

hello <br>Tornado<br>{"name": "wu"}
class MainHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):self.write('hello <br>')self.write(b'Tornado<br>')self.flush()time.sleep(3)self.write({'name': 'wu'})
hello 
Tornado
{"name": "wu"}                  (3秒后显示)

缓冲区

write 会先把内容放在缓冲区,
正常情况下,当请求处理完成的时候会自动把缓冲区的内容输出到浏览器,
但是可以调用 flush 方法,这样可以直接把缓冲区的内容输出到浏览器,不用等待请求处理完成

render 返回html

import tornado.ioloop
import tornado.options
import tornado.httpserver
import tornado.web
from tornado.options import define,optionsdefine('port',default=8000,type=int,help='port')class IndexHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):self.render('01in_out.html')application = tornado.web.Application(handlers=[(r'/',IndexHandler),],template_path = 'template',debug = True)if __name__ == '__main__':tornado.options.parse_command_line()http_server = tornado.httpserver.HTTPServer(application)http_server.listen(options.port)tornado.ioloop.IOLoop.current().start()

去template文件夹下 找 01in_out.html 文件 write html

01in_out.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>hello world
</body>
</html>

页面显示 http://127.0.0.1:8000/

hello world

返回 HTML

class IndexHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):self.render('01in_out.html')
通过  render  可以返回一个 html 文件 

Application

template_path='templates', 
想要 Tornado 能够正确的找到 html 文件,需要在 Application 中指定文件的位置 

redirect 跳转路由

import tornado.ioloop
import tornado.options
import tornado.httpserver
import tornado.web
from tornado.options import define,optionsdefine('port',default=8000,type=int,help='port')class TemHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):self.write('hello world!!!!')class RecHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):self.redirect(r"/tem")application = tornado.web.Application(handlers=[(r'/tem',TemHandler),(r'/rec',RecHandler),],template_path = 'template',debug = True
)if __name__ == '__main__':tornado.options.parse_command_line()http_server = tornado.httpserver.HTTPServer(application)http_server.listen(options.port)tornado.ioloop.IOLoop.current().start()

http://127.0.0.1:8000/rec 自动跳转到 http://127.0.0.1:8000/tem

跳转路由

class RecHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):import timetime.sleep(3)self.redirect(r"/tem")
通过  redirect 可以跳转到指定的路由

路由

(r'/rec', RecHandler),

finish()

请求结束 后面的语句不会再执行

class TemHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):self.write('hello world!!!!')self.finish()self.write('www')

获取请求信息

self.request

import tornado.ioloop
import tornado.options
import tornado.httpserver
import tornado.web
from tornado.options import define,optionsdefine('port',default=8000,type=int,help='port')class ReqHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):self.write(self.request.remote_ip)application = tornado.web.Application(handlers=[(r'/req',ReqHandler),],template_path = 'template',debug = True
)if __name__ == '__main__':tornado.options.parse_command_line()http_server = tornado.httpserver.HTTPServer(application)http_server.listen(options.port)tornado.ioloop.IOLoop.current().start()

http://127.0.0.1:8000/req

10.0.0.2
methodHTTP请求方法,例如 GET 或 POST
remote_ip客户端的IP地址,返回值类型为字符串
full_url()重新构建此请求的完整URL
request_time()返回此请求执行所花费的时间
uri请求的完整uri
path路径部分的uri
query查询部分的uri
version请求中指定的HTTP版本,例如“HTTP /1.1”
import tornado.ioloop
import tornado.options
import tornado.httpserver
import tornado.web
from tornado.options import define,optionsdefine('port',default=8000,type=int,help='port')class ReqHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):self.write(self.request.remote_ip)self.write('<br>')self.write(self.request.full_url())self.write('<br>')print(self.request.request_time())application = tornado.web.Application(handlers=[(r'/req',ReqHandler),],template_path = 'template',debug = True
)if __name__ == '__main__':tornado.options.parse_command_line()http_server = tornado.httpserver.HTTPServer(application)http_server.listen(options.port)tornado.ioloop.IOLoop.current().start()

页面显示

客户端的IP地址,返回值类型为字符串

重新构建此请求的完整URL

10.0.2.2
http://127.0.0.1:8000/req

终端显示

request_time() 返回此请求执行所花费的时间

0.00052285.。。。。。。。。。。。。。<class 'str'>  '10.0.2.2'

self.request可以获取到的请求信息

methodHTTP请求方法,例如“GET”或“POST”
uri请求的完整uri
path路径部分的uri
query查询部分的uri
version请求中指定的HTTP版本,例如“HTTP / 1.1”
headersHTTPHeaders用于请求标题的类似字典的对象。request.headers[“aaa”] 像一个不区分大小写的字典一样使用附加的重复标题的方法。
body请求主体(如果存在)作为字节串
remote_ip客户端的IP地址作为字符串。如果HTTPServer.xheaders设置,将传递由负载均衡器在X-Real-IpX-Forwarded-For头中提供的真实IP地址。版本3.1更改:X-Forwarded-For现在支持列表格式。
protocol所使用的协议是“http”或“https”。如果HTTPServer.xheaders 设置,将通过负载均衡器使用的协议(如果通过X-Scheme头部报告)传递。
host请求的主机名,通常取自Host标题
arguments参数属性中提供GET / POST参数,它将参数名称映射到值列表(以支持单个名称的多个值)。名称是类型str,而参数是字节字符串。请注意,这不同于 RequestHandler.get_argument,它将参数值作为unicode字符串返回。
query_argumentsarguments格式相同 但只包含从查询字符串中提取的参数。版本3.2中的新功能
body_argumentsarguments格式相同 但只包含从请求体提取的参数。版本3.2中的新功能。
files文件属性中可以使用文件上传,它将文件名映射到列表HTTPFiletornado.httputil.``HTTPFile表示通过表单上传的文件。为了向后兼容,其实例属性也可作为字典键访问。
full_url()重新构建此请求的完整URL。
request_time()返回此请求执行所花费的时间。

输入


import tornado.ioloop
import tornado.options
import tornado.httpserver
import tornado.web
from tornado.options import define,optionsdefine('port',default=8000,type=int,help='port')class IndexHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):name = self.get_argument('name','no')self.write('hello'+name)print(name)name = self.get_arguments('name')self.write('<br>')self.write(','.join(name))print(name)application = tornado.web.Application([(r'/',IndexHandler)
])if __name__ == '__main__':tornado.options.parse_command_line()http_server = tornado.httpserver.HTTPServer(application)http_server.listen(options.port)tornado.ioloop.IOLoop.current().start()
http://127.0.0.1:8080/?name=号hello号 
号 
http://127.0.0.1:8080/?name=号&name=你hello你
号,你

get_argument get_arguments

import tornado.ioloop
import tornado.options
import tornado.httpserver
import tornado.web
from tornado.options import define,optionsdefine('port',default=8000,type=int,help='port')class GetHandler(tornado.web.RequestHandler):def get(self, *args):name = self.get_argument('name','no')self.write(name)self.write('<br>')name = self.get_arguments('name')print(name)self.write('<br>'.join(name))application = tornado.web.Application(handlers=[(r'/get',GetHandler),],template_path = 'template',debug = True
)if __name__ == '__main__':tornado.options.parse_command_line()http_server = tornado.httpserver.HTTPServer(application)http_server.listen(options.port)tornado.ioloop.IOLoop.current().start()
http://127.0.0.1:8000/getno终端显示
[]
http://127.0.0.1:8000/get?name=五五
五终端显示
['五']
http://127.0.0.1:8000/get?name=五&name=三三
五
三终端显示
['五', '三']

获取 URL 数据

get_argument
可以获取 URL (查询字符串)中的参数

获取 body 数据

get_argument
可以获取 body (请求体)中的数据

get_argument
返回的值始终是unicode

import tornado.ioloop
import tornado.options
import tornado.httpserver
import tornado.web
from tornado.options import define,optionsdefine('port',default=8000,type=int,help='port')class IndexHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):self.render('01in_out.html')class GetHandler(tornado.web.RequestHandler):def get(self, *args):name = self.get_argument('name','no')   # 可以获取 URL (查询字符串)中的参数self.write(name)self.write('<br>')name = self.get_arguments('name')print(name)self.write('<br>'.join(name))def post(self, *args, **kwargs):name = self.get_argument('name','no')   # 可以获取 body (请求体)中的数据password = self.get_argument('password','123')self.write("name %s <br> password %s " %(name,password))application = tornado.web.Application(handlers=[(r'/',IndexHandler),(r'/get',GetHandler),],template_path = 'template',debug = True
)if __name__ == '__main__':tornado.options.parse_command_line()http_server = tornado.httpserver.HTTPServer(application)http_server.listen(options.port)tornado.ioloop.IOLoop.current().start()

01in_out.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>hello world<form method="post" action="/get"><p>用户名:<input type="text" name="name"></p><p>密&emsp;码:<input type="password" name="password"></p><input type="submit"></form>
</body>
</html>
访问 http://127.0.0.1:8000/  
显示 01in_out.html 
01in_out.html  中form表单提交数据 提交到/get路由 
通过路由表 找到GetHandler类  
因通过post方式提交的数据 
所以需添加def post()处理post请求

get_query_argument

获取查询字符串中参数

对应的也有:get_query_arguments

class GetHandler(tornado.web.RequestHandler):def get(self):name = self.get_query_argument('name', 'no')self.write(name)
http://127.0.0.1:8000/get?name=我
我
import tornado.ioloop
import tornado.options
import tornado.httpserver
import tornado.web
from tornado.options import define, optionsimport timedefine('port', default=8000, type=int, help='port')class IndexHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):self.render('01in_out.html')class GetHandler(tornado.web.RequestHandler):def get(self, *args):name = self.get_query_argument('name', 'no')self.write(name)def post(self, *args, **kwargs):name = self.get_argument('name','no')password = self.get_argument('password','123')self.write("name %s <br> password %s " %(name,password))name1 = self.get_query_argument('name','no')print(name1)application = tornado.web.Application(handlers=[(r'/', IndexHandler),(r'/get', GetHandler),],template_path='template',debug=True
)if __name__ == '__main__':tornado.options.parse_command_line()http_server = tornado.httpserver.HTTPServer(application)http_server.listen(options.port)tornado.ioloop.IOLoop.current().start()

form action=”/get?name=wu”

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>hello world<form method="post" action="/get?name=wu"><p>用户名:<input type="text" name="name"></p><p>密&emsp;码:<input type="password" name="password"></p><input type="submit"></form>
</body>
</html>
访问 http://127.0.0.1:8000/  填数据
转到 http://127.0.0.1:8000/get?name=wu
页面显示 
name 5 
password 5终端显示
wu

get_body_argument

获取 body 中的参数

对应的也有: get_body_argument

class GetHandler(tornado.web.RequestHandler):def get(self):name = self.get_query_argument('name', 'no')self.write(name)def post(self):name = self.get_body_argument('name', 'no')password = self.get_body_argument('password', '123')self.write("name %s <br> password %s " % (name, password))
import tornado.ioloop
import tornado.options
import tornado.httpserver
import tornado.web
from tornado.options import define,optionsdefine('port',default=8000,type=int,help='port')class IndexHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):self.render('01in_out.html')class GetHandler(tornado.web.RequestHandler):def get(self, *args):name = self.get_query_argument('name', 'no')self.write(name)def post(self, *args, **kwargs):name = self.get_body_argument('name', 'no')password = self.get_body_argument('password', '123')self.write("name %s <br> password %s " % (name, password))application = tornado.web.Application(handlers=[(r'/',IndexHandler),(r'/get',GetHandler),],template_path = 'template',debug = True
)if __name__ == '__main__':tornado.options.parse_command_line()http_server = tornado.httpserver.HTTPServer(application)http_server.listen(options.port)tornado.ioloop.IOLoop.current().start()
访问 http://127.0.0.1:8000/ 填写form表单 提交数据 转到/get路由可以访问到form表单中提交的数据name 2  password 2 

url传参

查询字符串风格

class GetHandler(tornado.web.RequestHandler):def get(self, *args):name = self.get_argument('name','no')self.write(name)
路由r'/get', GetHandler),
urlhttp://127.0.0.1:8000/get?name=budong

REST风格

按参数位置传值

(r'/usr/(.+)/([0-9]+)',UsrHandler),
import tornado.ioloop
import tornado.options
import tornado.httpserver
import tornado.web
from tornado.options import define,optionsdefine('port',default=8000,type=int,help='port')class UsrHandler(tornado.web.RequestHandler):def get(self, name,age):self.write('name:%s <br> age:%s'%(name,age))application = tornado.web.Application(handlers=[(r'/usr/(.+)/([0-9]+)',UsrHandler),],template_path = 'template',debug = True
)if __name__ == '__main__':tornado.options.parse_command_line()http_server = tornado.httpserver.HTTPServer(application)http_server.listen(options.port)tornado.ioloop.IOLoop.current().start()
http://127.0.0.1:8000/usr/五/15name:age:15

按参数名字传值

 (r'/stu/(?P<age>[0-9]+)/(?P<name>.+)', StuHandler)
import tornado.ioloop
import tornado.options
import tornado.httpserver
import tornado.web
from tornado.options import define,optionsdefine('port',default=8000,type=int,help='port')class StuHandler(tornado.web.RequestHandler):def get(self, name,age):self.write('name:%s <br> age:%s'%(name,age))application = tornado.web.Application(handlers=[(r'/stu/(?P<age>[0-9]+)/(?P<name>.+)', StuHandler),],template_path = 'template',debug = True
)if __name__ == '__main__':tornado.options.parse_command_line()http_server = tornado.httpserver.HTTPServer(application)http_server.listen(options.port)tornado.ioloop.IOLoop.current().start()
http://127.0.0.1:8000/stu/15/五 name:age:15
路由(r'/usr/(.+)/([0-9]+)',UsrHandler),
(r'/stu/(?P<age>[0-9]+)/(?P<name>.+)', StuHandler),url
http://127.0.0.1:8000/usr/五/15
http://127.0.0.1:8000/stu/15/五 

get和post的区别是:

get就是获取服务器数据的意思,

post是类似于提交数据,往服务器提交数据。

http://www.lbrq.cn/news/2778085.html

相关文章:

  • 库尔勒网站全免费建立自己的网站
  • 手机装修设计软件app云南seo网络优化师
  • 如何选择网站建设企业网络推广软件
  • 做网站 过程长沙的seo网络公司
  • 南山区做网站公司宁波seo教程网
  • 做赚钱的网站今日国际军事新闻最新消息
  • 做p2p网站多少钱aso优化重要吗
  • 做网站需要编码吗百度中心
  • 沈阳德泰诺网站建设公司 概况学营销app哪个更好
  • 建设拍卖网站google安卓版下载
  • 网站制作软件有哪些seo站长工具下载
  • 重庆市建设工程造价信息网爬虫上海牛巨微seo关键词优化
  • 网站建设目标责任深圳seo技术
  • vps可以做wordpress和ssr唐山seo排名
  • 济南高新区 网站建设太原网站快速排名优化
  • 做的最好的相亲网站有哪些独立站谷歌seo
  • 阿里云ace+wordpress网站快速优化排名方法
  • 中山网站建设的价格成人本科报考官网
  • wordpress 飞龙博客 许愿墙常德网站seo
  • 网站开发工程师助理百度百家号注册
  • 企业手机版网站百度网盘电脑版下载
  • 兰州做网站优化短视频推广公司
  • 做游戏网站赚钱吗seo效果检测步骤
  • 中卫网站推广优化公司seo的中文意思
  • 模板建站优缺点app开发工具
  • 怎么做跨境电商网站关键词搜索方法
  • 网站页脚设计代码百度官网平台
  • 到那里找做网站的兼职广州新闻最新消息今天
  • 如何设计购物网站龙岗网站设计
  • 仪征 网站建设亚马逊关键词优化怎么做
  • Diamond开发经验(1)
  • 浅看架构理论(二)
  • Vim笔记:缩进
  • 单片机驱动LCD显示模块LM6029BCW
  • Windows平台Frida逆向分析环境完整搭建指南
  • 为何她总在关键时“失联”?—— 解密 TCP 连接异常中断