#写一个app.py,处理3个URL:

'''

GET / : 首页,返回Home;

GET /signin:登录页,显示登录表单;

POST /signin: 处理登录表单,显示登录结果。

'''

#注意,同一个URL/signin 分别有GET和POST两种请求,映射到两个处理函数中。

#Flask通过Python的装饰器在内部自动地把URL和函数给关联起来:

from flask import Flask    #First we imported the Flask class. An instance of this class will be our WSGI application.

from flask import request

app=Flask(__name__)

#创建了一个Flask实例. 第一个参数是 这个应用的模块(module)或包(package)的名字

#如果你使用单个模块,第一个参数就应该是 __name__   because depending on if it's started as application or

#imported as  module the name will be different('__main__' versus the actual import name).this is needed so that Flask knows where to look

#for templates,static file,and so on .

@app.route('/',methods=['GET','POST'])

#route() decorator 告诉 Flask 什么URL 指向该功能/函数  .

#http 有不同的响应方式对于URLs.默认的是GET ,可以通过提供参数methods的值来改变,可能的值有 GET HEAD POST PUT DELETE OPTIONS

def home():

return '<h1>Home</h1>'

@app.route('/signin',methods=['GET'])

def signin_form():

return '''

<form action="/signin" method="post">

<p><input name="username"></p>

<p><input name="password" type="password"></p>

<p><button type="submit">Sign In</button></p>

</form>'''

@app.route('/signin',methods=['POST'])

def signin():

#需要从request对象读取表单内容:

if request.form['username']=='admin' and request.form['password']=='password':

return '<h3>Hello,admin!</h3>'

return '<h3>Bad username or password.</h3>'

if __name__=='__main__':

app.run()

#运行python flask_1.py,Flask自带的Server在端口5000上监听:

#打开浏览器,输入首页地址http://localhost:5000/ ,显示首页

#输入http://localhost:5000/signin,会显示登录表单,输入预设的用户名admin和口令password,登录成功,输入其他错误的用户名和口令,登录失败

'''

除了Flask,常见的Python Web框架还有:

Django:全能型Web框架;

web.py:一个小巧的Web框架;

Bottle:和Flask类似的Web框架;

Tornado:Facebook的开源异步Web框架

'''

'''

有了Web框架,我们在编写Web应用时,注意力就从WSGI处理函数转移到URL+对应的处理函数,这样,编写Web App就更加简单了。

在编写URL处理函数时,除了配置URL外,从HTTP请求拿到用户数据也是非常重要的。Web框架都提供了自己的API来实现这些功能。

Flask通过request.form['name']来获取表单的内容。

'''

from flask import Flask ,render_template

app=Flask(__name__)

@app.route('/')

def hello():

return '欢迎光临,你好!'

@app.route('/about')

def about():

return '这是一个使用Flask建立的小网站测试'

@app.route('/user/')

@app.route('/user/<username>')

def show_user(username=None):

return render_template('show_user.html', name=username)

if __name__ == '__main__':

app.run()

http://127.0.0.1:5000/user/tony,输入这个链接,tony会作为入参放在username中。

flask也提供了网页模板功能(采用Jinja2模板引擎),让开发者把一些固定的使用的.html文件放在templates目录下。

从网站上读取数据(首先要建立一个窗体的网页,使用request模块获取窗体内的数据):

@app.route('/login',methods=['POST','GET'])

def login():

error=None

if request.method=='POST':

username=request.form['username']

password=request.form['password']

...处理用户验证的程序代码...

return render_templates('login.html',error=error)

flask小例的更多相关文章

  1. linux 命令小例

    xargs示例: ls |xargs -i mv {}  /opt find示例: find -mtime +n -name “*.avi” -type f -exec rm {} \; find - ...

  2. Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例

    Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例 一.在Eclipse下编译安装Hadoop插件 Hadoop的Eclipse插件现在已经没有二进制版直接提供,只能自己编译. ...

  3. 使用libcurl下载文件小例

    libcurl是一个很强大的开源网络处理库,支持包括HTTP.HTTPS.FTP……一系列网络协议.用它来进行HTTP的get\post 或者下载文件更是小菜一碟,chrome内核都用到了它,本文主要 ...

  4. webpack -- 多页面简单小例

    有时单页面并不能满足我们的业务需求,就需要去构建多页面应用,以下为简单小例: entry:{ index:'./src/module/index/index.js', student:'./src/m ...

  5. Flask小总结+实例化Flask参数以及对app的配置

    Flask 小而精 三方组件全 稳定性相对较差 1.启动: from flask import Flask app = Flask(__name__) app.run("0.0.0.0&qu ...

  6. [libpng]CMake+VS2015下编译libpng,及使用小例

    编译前的工作 在编译libpng前,需要把zlib编译好,并加载到编译环境里. CMake + VS2015 下编译zlib,及使用小例 下载与解压 libpng的官网是 http://www.lib ...

  7. python flask 小项目

    0 开始之前 网上看了很多教程,都不是很满意,因此自己写一个大型教程,从入门到做出一个比较完整的博客.此次教程不是直接把整个博客直接代码整理出来然后运行一遍就完事,我会从flask的各个模块讲起.所以 ...

  8. HTML5基础小结(二)——标签小例

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amlhaGFuNjI5NjI5/font/5a6L5L2T/fontsize/400/fill/I0 ...

  9. js入门学习~ 运动应用小例

    要实现的效果如下: 鼠标移入各个小方块,实现对应的效果(变宽,变高,移入透明,移出恢复)~~ (且各运动相互之前不干扰)  主要是练习多个物体的运动框架~~ --------------------- ...

随机推荐

  1. 利用unittest+ddt进行接口测试(二):使用yaml文件管理测试数据

    知道ddt的基本使用方法之后,练习把之前用excel文件来维护的接口测试用例改用unittest+ddt来实现. 这里我选用yaml文件来管理接口参数,开始本来想用json,但是json无法添加注释, ...

  2. 20165327 2017-2018-2《Java程序设计》课程总结

    20165327 2017-2018-2<Java程序设计>课程总结 预备作业一:我期望的师生关系 预备作业二:学习基础和C语言基础调查 预备作业三:预备作业3 Linux安装及学习 第一 ...

  3. tomcat ----> 启动,关闭和配置等等

    1.启动 在tomcat安装目录的bin文件中双击startup.bat. 2.关闭 在tomcat安装目录的bin文件中双击shutdown.bat. 3.配置tomcat-user.xml文件 ( ...

  4. 非常棒的——python Deep learning 学习笔记

    https://www.cnblogs.com/zhhfan/p/9985991.html

  5. pandas的时间戳

    pandas时间: p1=pd.Timestamp(2018, 2, 3) p1输出:2018-02-03 00:00:00 p1输出类型:<class 'pandas._libs.tslib. ...

  6. linux权限管理之文件属性

    文件属性 chattr ======================================================== 文件权限管理之: 文件属性注:设置文件属性(权限),针对所有用 ...

  7. You Don't Know JS: Async & Performance(第一章, 异步:now & later)

    Chapter 1: Asynchrony: Now & Later 在一门语言中,比如JavaScript, 最重要但仍然常常被误解的编程部分是如何在一个完整的时间周期表示和操作程序行为. ...

  8. Linux中常用压缩打包工具

    Linux中常用压缩打包工具 压缩打包是常用的功能,在linux中目前常用的压缩工具有gzip,bzip2以及后起之秀xz.本文将介绍如下的工具常见压缩.解压缩工具以及打包工具tar. gzip2 直 ...

  9. 【微信公众号开发】【13】批量导出公众号所有用户信息到Excel

    前言: 1,一次拉取调用最多拉取10000个关注者的OpenID,当公众号关注者数量超过10000时,可通过填写next_openid的值,从而多次拉取列表的方式来满足需求 2,获取OpenID列表后 ...

  10. Android之Activity生命周期详解

    Activity的生命周期方法: onCreate()--->onStart()--->onResume()--->onPause()--->onStop()--->on ...