Python+Bottle+Sina SAE快速建立网站
优采云 发布时间: 2020-08-12 11:36Bottle是新生一代Python框架的代表,利用Bottle建立网站将非常简单。
Sina SAE是国外较出名的云平台之一,十分适用于个人网站的开发或创业公司网站开发。
下面将介绍假若通过Python+Bottle+Sina SAE快速搭建一个网站。
1.注册Sina SAE帐号后,创建应用,选择Python应用。进入代码管理,创建代码版本,点击编辑代码,就能看到这样的界面:
# encoding=utf8
import sae
#导入Bottle模块
from bottle import Bottle,route, run, template, request, response, post, get, static_file,debug
app=Bottle()
debug(True) #打开debug功能
@app.get('/')
def web_index():
return "Hello World"
application = sae.create_wsgi_app(app)
将index.wsgi文件的代码换成以上的代码,就能实现一个最简单的网站。现在访问(XXXX是我们创建应用的时侯输入的二级域名),就能返回"Hello world”。
@app.get('/')
def web_index():
return "Hello World"
这段代码就是一个路由,其中get是HTTP访问方法,一般常用get和post;'/'是uri地址。
@app修饰器下边须要一个函数的定义,当用户访问"/"uri时,服务器都会调用这个函数,并把函数return的结果返回给用户,函数可以返回字符串,返回网页(template),返回文件(static_file)等。
2.return网页
现在要制做一个返回登入页面的功能。
在服务器的根目录创建一个views文件夹(文件名没有硬性规定的),并放置一个login.html文件
login.html文件代码为
用户名:
密码:
在index.wsgi文件加入代码:
@app.get("/login")
def web_login():
return template("login")
这是访问/login都会返回login.html这个网页
3.return动态网页
template功能非常强悍,可以动态地在html文件中插入参数,同时,html上面可以输入python代码来让参数的插入更灵活。
例如我们"/logn"路由代码改成:
@app.get("/login")
def web_login():
myList=["print me","no print me","print me"]
return template("login",myList=myList)
将login.html的代码改成:
用户名:
密码:
% for item in myList:
%if item=="print me":
{{item}}
%end<br /> %end <br />
由于html文件不能辨识缩进,所以须要%end来标记一个for或if的结束。输出结果为
网页承继:
% rebase('nav_base.html')
父网页要加入
{{!base}}
网页收录子网页
% include('show_cols_include.html')
设置参数的默认值
% setdefault('cashier_id', '0')
4.return文件
在服务器的根目录创建一个images文件夹
index.wsgi代码:
@app.get("/images/:filename")
def file_images(filename):
return static_file(filename,root='images')
这样,客户端就可以直接下载服务器的文件,例如网页中的图片,用到的CSS,JS文件等。
5.return JSON
在bottle,直接return字典类型的数据,就等于return JSON数据,如
myDict={“name”:"kevin";"age":21}
return myDict
6.获取恳求的参数
很多的get恳求会附送一些参数,post恳求会有客户端发来的JSON,可以用以下代码来获取:
name=request.params.get("name")
"name"为参数名称
7.设置或获取cookie
设置cookie:
response.set_cookie('username',"this is my username")
获取cookie
username=request.get_cookie("username")
8.上传文件
file_path = 'static/xls/{0}.xls'.format(str(int(time.time())))
filename=request.files.get('input_xls').filename() #获取文件名<br />request.files.get('input_xls').save(file_path) #保存文件
上传文件一定要在html form 标签加入属性
enctype ="multipart/form-data"
构建一个自己的服务器和自己的网站就那么简单。
暂时想到这么多,以后继续补充~~~~
最后附上index.wsgi的全部代码: