bottle是一个轻量级的Web框架,此框架只由一个 bottle.py 文件构成,不依赖任何第三方模块。
1.模块安装
pip install bottle
2.运行下面的代码,然后地址栏输入127.0.0.1:8080这样一个小型web项目就搭建好了
from bottle import route, run
@route('/') # 默认为get请求
def hello():
return "Today is a beautiful day"
run(host='localhost', port=8080, debug=True) #开启服务
运行结果
123.png
3.使用二级域名
#二级域名
@route('/hello')
def hello():
return "您正在使用二级域名访问"
运行效果
image.png
4.使用POST请求
#使用POST请求 GET PUT 改动 method参数即可
@route('/post',method="POST")
def hello():
return "您正在使用POST"
5.模板一
from bottle import template
#模板一
@route('/tmp')
def hello():
data = '数据'
return template("<h1>模板一 {{name}}</h>",name = data)
运行效果
image.png
6.模板二 引用html文件,在同目录下创建a.html
#模板二
@route('/tmp2')
def hello():
data = '我来自模板二数据'
return template("a.html",name = data)
a.html文件代码
<html>
<title>模板二</title>
<body>
{{name}}
</body>
</html>
运行效果
image.png
7.模板三 html里加入代码
#模板三
@route('/tmp3')
def hello():
data = '我来自模板二数据'
data1 = ['小明','小红','小黑']
return template("a.html",name = data, data = data1)
a.html文件代码
<html>
<title>模板三</title>
<body>
{{name}}
</br>
%import json
%for i in range(0,len(data)):
{{data[i]}}</br>
%end
</body>
</html>
运行效果
image.png
8.HTTP错误和重定向
from bottle import error,abort,redirect
@error(404)
def miss(code):
#错误页面,一般来说,可以在网站制定一个404的HTML页面,然后用return template('404')去访问404这个页面
return '没找到页面!'
@route('/error')
def nofound():
#引发404错误
abort(404)
@route('/')
def index():
return '这里是首页'
@route('/page')
def page():
#当访问/page的时候,重新跳转到首页
redirect('/')
@error(500)
def err(code):
return "系统出错"
9.静态文件映射 (文件预览,下载功能)
# 静态文件映射,static_file()函数用于响应静态文件 的请求
@route('/static/<filename:path>')
def login(filename):
return static_file(filename,root=os.getcwd())
10.文件上传
#文件上传
from bottle import request
@route('/upload',method='POST')
def login():
data = request.files.file
fileName = data.filename
data.save(os.getcwd()+"\\"+fileName,overwrite = True)
a.html页面代码
<html>
<title>模板二</title>
<body>
模板二</br>
{{name}}
<hr>
模板三
</br>
%import json
%for i in range(0,len(data)):
{{data[i]}}</br>
%end
<hr>
上传文件
<form action="/upload" method="PSOT" enctype="multipart/form-data">
<input type="file" name="data" class="file-upload" onchange ="uploadFile(this,1)"/>
</form>
</body>
<script>
function uploadFile(obj, type) {
var fileObj = obj.files[0]; // js 获取文件对象
var FileController = "http://"+window.location.host+"/upload"; // 接收上传文件的后台地址
// FormData 对象
var form = new FormData();
form.append("author", "hooyes");
// 可以增加表单数据
form.append("file", fileObj); // 文件对象
// XMLHttpRequest 对象
var xhr = new XMLHttpRequest();
xhr.open("post", FileController, true);
xhr.onload = function() { //
alert("上传完成!");
};
// xhr.upload.addEventListener("progress", progressFunction, false);
xhr.send(form);
}
</script>
</html>
11.GET 和 POST 取值方式
#GET POST 取值方式
# name = request.query.name
# name = request.forms.get("name")
12.cookie
# 设置cookie
response.set_cookie("name",username, secret= 'some-secret-key')
# 获取cookie
request.get_cookie("name", secret= 'some-secret-key')
13.数据库可以使用sqlite3
python3 使用sqlite3数据库 - 简书 (jianshu.com)
网友评论