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:// ...
随机推荐
- DataGridView实现倒计时功能(源码)
需求:最近做一个即时通项目,需要结合OA项目:其中有一个待办事项需要倒计时,准备在DataGridView里展示,如图: 第一步:绑定数据 ; intLoop <= ; intLoop++) { ...
- 如何定位到div滚动条的最底端
function ScrollDiv() { var ex = document.getElementById("calm"); ex.scrollTop = ex.scrollH ...
- 斐波那契数列_java版本
package 斐波那契数列; public class fbnq { public static void main(String[] args){ System.out.println(fibon ...
- 面试体验:Google 篇(转)
http://www.cnblogs.com/cathsfz/archive/2012/08/08/google-interview-experience.html 尝试在自己的博客上搜索点东西,结果 ...
- javascript笔记04:let语句 和 yield语句 和 with语句
1.yield语句: <script type="application/javascript; version=1.7"> function generator() ...
- 如何在C#中循环一个枚举
在C#中要想迭代循环一个枚举,最容易想到的办法是直接进行循环,如下代码所示: public enum Suit { Spades, Hearts, Clubs, Diamonds } publ ...
- json与jsonp区别浅析(json才是目的,jsonp只是手段)
一言以蔽之,json返回的是一串数据:而jsonp返回的是脚本代码(包含一个函数调用): JSON其实就是JavaScript中的一个对象,跟var obj={}在质上完全一样,只是在量上可以无限扩展 ...
- Objective-C /iphone开发基础:协议(protocol)
protocol协议时为了补充Objective-C 只能单继承的缺陷而增加的一个新功能.Objective-C重所有的方法都是虚方法,所以在oc重也就没有关键字 virtual一说,有了协议可以补充 ...
- Python 基础【第十篇】内置类型
一.integral 类型 Python提供了两种integral类型,即int(整数)与bool(布尔值). 1.1.整数 整数的相关运算符.函数.数据类型转换 1.1.1.整数的运算符 前面已经讲 ...
- 关于properties文件在项目中的使用
这个是当时在学习JDBC的时候老师给讲的.web项目中把一些常用的用户名和密码都填写到一个对应的配置文件中,这样每次修改密码或者用户名的时候就可以直接修改这个配置文件了,不用动源码. 老师讲了两种读取 ...