Python+Bottle+Sina SAE快速构建网站
Bottle是新生一代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.sinaapp.com(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文件代码为
<html>
<body>
<form action="/login">
用户名:
<input type="text" name="username">
密码:
<input type="password" name="pwd">
<input type="submit" value="登陆">
</form>
</body>
</html>
在index.wsgi文件加入代码:
@app.get("/login")
def web_login():
return template("login")
这是访问XXXX.sinaapp.com/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的代码改成:
<html>
<body>
<form >
用户名:
<input type="text" name="username">
密码:
<input type="password" name="pwd">
<input type="submit" value="登陆">
</form>
% for item in myList:
%if item=="print me":
<p>{{item}}</p>
%end
%end
</body>
</html>
由于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() #获取文件名
request.files.get('input_xls').save(file_path) #保存文件
上传文件一定要在html form 标签加入属性
enctype ="multipart/form-data"
构建一个自己的服务器和自己的网站就这么简单。
暂时想到这么多,以后继续补充~~~~
最后附上index.wsgi的全部代码:
# encoding=utf8
import sae
from bottle import Bottle,route, run, template, request, response, post, get, static_file,debug
app=Bottle()
debug(True) @app.get('/')
def web_index():
return "Hello World" @app.get("/login")
def web_login():
myList=["print me","no print me","print me"]
return template("login",myList=myList) @app.get("/params")
def params():
name=request.params.get("name")
return name @app.get("/images/:filename")
def file_images(filename):
return static_file(filename,root='images') application = sae.create_wsgi_app(app)
Python+Bottle+Sina SAE快速构建网站的更多相关文章
- 迎接 Windows Azure 和 DNN 挑战,几分钟内快速构建网站!
编辑人员注释:本文章由高级商务策划师兼开发平台推广者 Neeti Gupta 撰写. 曾几何时,构建一个简单的网站需要耗费好几个月的时间.在过去,.NET 开发人员和设计社区的一些成员使用 DNN(以 ...
- (视频)《快速创建网站》 4.1 为啥造软件不同于造汽车,为啥是软件就一定会有Bug - 构建开发运维一体化(DevOps)
本文是<快速创建网站>系列的第9篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...
- 使用 Responsive Elements 快速构建响应式网站
Responsive Elements 可以使任何元素来适应和应对他们所占据的区域.这是一个轻量的 JavaScript 库,你可以轻松嵌入到你的项目.元素会更具自己的宽度,自动响应和适应空间的增加或 ...
- 【jQuery插件】用jQuery Masonry快速构建一个pinterest网站布局(转)
[jQuery插件]用jQuery Masonry快速构建一个pinterest网站布局 时间:2011年03月21日作者:愚人码头查看次数:29,744 views评论次数:25条评论 前段时间领导 ...
- 为 Python Server Pages 和 Oracle 构建快速 Web 开发环境。
为 Python Server Pages 和 Oracle 构建快速 Web 开发环境. - 在水一方 - 博客频道 - CSDN.NET 为 Python Server Pages 和 Oracl ...
- GAE+bottle+jinja2+beaker快速开发demo - Python,GAE - language - ITeye论坛
GAE+bottle+jinja2+beaker快速开发demo - Python,GAE - language - ITeye论坛 :GAE+bottle+jinja2+beaker快速开发 ...
- 假装前端工程师(一)Icework + GitHub pages 快速构建可自定义迭代开发的 react 网站
icework + gh-pages 超快部署超多模版页面 项目地址:https://github.com/yhyddr/landingpage效果地址:https://yhyddr.github.i ...
- (视频) 《快速创建网站》 3.2 WordPress多站点及Azure在线代码编辑器 - 扔掉你的ftp工具吧,修改代码全部云端搞定
本文是<快速创建网站>系列的第6篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...
- (视频) 《快速创建网站》2.1 在Azure上创建网站及网站运行机制
现在让我们开始一天的建站之旅. 本文是<快速创建网站>系列的第2篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http:// ...
随机推荐
- linux服务器命令
清除屏幕数据:ctrl + l :快速查找某个文件: find / -name 'httpd.conf' (或php.ini) 重启Apache : service httpd restar ...
- IIS 之 添加MIME扩展类型及常用的MIME类型列表
经常用IIS作为下载服务器的时候有时传上去的文件比如 example.mp4 文件名上传后,但是用http打开的时候确显示为 404 文件不存在.其实是IIS对文件的一种保护,不在IIS指定的MIME ...
- 如何获取SQL Server数据库元数据的方法
发布时间:2007.06.15 05:05 来源:赛迪网 作者:3946469 元数据简介 元数据 (metadata) 最常见的定义为“有关数据的结构数据”,或者再简单一点就是“关于数据 ...
- Android_SystemService
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...
- How the Kernel Manages Your Memory
http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory/ After examining the virtual ...
- Fortify规则与CERT JAVA 安全编程规范的对照表
Fortify规则与CERT JAVA 安全编程规范的对照表http://www.automationqa.com/forum.php?mod=viewthread&tid=4353& ...
- 关于MANIFEST.MF的理解
打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录,这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息. 在Java平台中, M ...
- RGBa颜色 css3的Alpha通道支持
CSS3中,RGBa 为颜色声明添加Alpha通道. RGB值被指定使用3个8位无符号整数(0 – 255)并分别代表红色.蓝色.和绿色.增加的一个alpha通道并不是一个颜色通道——它只是用来指定除 ...
- 读jQuery官方文档:样式
样式 使用jQuery,无论是设置或者获取元素样式都十分简便. // 支持驼峰式和分割线式,两种方式等价(原生JavaScript只支持驼峰式) $('h1').css('fontSize'); $( ...
- C#面试基础问题
传入某个属性的set方法的隐含参数的名称是什么? value,它的类型和属性所声名的类型相同. 如何在C#中实现继承? 在类名后加上一个冒号,再加上基类的名称. C#支持多重继承么? 不支持.可以用接 ...