Python Flask 初探

来源:互联网 发布:最新中英文翻译软件 编辑:程序博客网 时间:2024/06/05 08:04

最近,搞了一台腾讯云的学生优惠服务器,不知道干什么。突然想到能够挂个网站,也想顺便学一下python(脚本之中我的最爱),就选择了轻量级的网站框架Flask。下面就简单的总结一下我的学习过程。

图书选择

在书的选择方面,依然决然的选择了《FlaskWeb开发:基于Python的Web应用开发实战》。理由有两个:一是,我有一定的Python基础,不用从零学习Python基础知识;二是,只有二百来页啊,页数少啊,能简单入门就可以了,太厚的书,太细节,不好找重点。

学习Flask基础部分开始

这一部分就是课本的第一部分,简单介绍了程序结构、模板、表单、数据库、电子邮件和大型程序的结构。这些都是构建程序的基础,这个必须得好好学习啊!打不好基础,就等于白浪费时间啊。

  1. 程序结构

学习程序结构,要求你着重学习Flask的基本结构,一个中心思想就是页面路由关联视图函数,每次请求都是由视图函数处理,视图函数返回字符串或者是返回渲染的页面。另外,函数定义时会有一行标记,用来说明导航的位置。视图函数结构如下:

@app.route('/')def index():    user_agent = request.headers.get('User-Agent')    return '<p>Your browser is %s</p>' % user_agent

index函数就是一个视图函数,@app.route(‘/’)一行是标记定义导航的位置为根目录。
启动服务器语句:

if __name__ == '__main__':    app.run(debug=True)

这种方式启动服务器,能够确保是执行该脚本启动的服务器,如果其他脚本引入该脚本,则不会启动服务器。

  1. 学习模板

Jinja2是一个强大的模板引擎。模板是一个包含响应文本的文件,其中包含占位变量表示的动态部分,其值只在请求的上下文中才能知道。使用真实值代替占位变量的过程叫做渲染,渲染模板的函数是render_template。模板长这样:

<h1>Hello {{name}}!/h1>

两个大括号中间的name就是一个占位变量。
同时,模板中还可以嵌入block语句块,用来界定页面的布局、占位填充或者是逻辑代码。如:

{% extends "base.html" %}{% block title %}Index{% endblock %}{% block head %}    {{ super() }}    <style>    </style>{% endblock %}{% block body %}    <h1>Hello, World!</h1>{% endblock %}

有了占位块和占位变量的知识以后,我们就可以顺理成章地理解和运用Flask-BootStrap了。(这里不再详述了)
在实际开发中为了系统的友好性,常常设置错误页面。如,处理404或500等错误。Flask同样包含这样的设置,如下代码:

@app.errorhandler(404)def page_not_found(e):    return render_template('404.html'),404@app.errorhandler(500)def internal_server_error(e):    return reder_template('500.html'),500

有了上面代码,当系统遇到404或500错误时,系统会自动跳转到相应的错误界面。
这一部分还包含静态文件的路径获取和Flask-Moment本地化时间和日期的学习,由于比较简单繁琐,这里就简述到这。

  1. 学习web表单

    python处理web表单使用了一个扩展Flask-WTF,它可以将处理表单的过程变得十分简单。
    Flask-WTF使用一个给定的密钥生成加密令牌,再用令牌验证表单中数据的真伪,来避免遭受跨站请求伪造的攻击。密钥设置方式如下:

    app=Flask(__name__)app.config['SECRET_KEY']='your secret key'

    开始设计一个表单。表单设置分为两步,第一步是设计表单类,第二步是在页面中设置布局。下面先设计表单类,将表单类简单地设计成包含一个输入框和提交按钮。代码如下:

    class NameForm(Form): name=StringField('What is your name?',validators=[Required]) submit = SubmitField('Submit')

    使用偷懒的方式建立表单页面,主要代码如下:

    {% import "bootstrap/wtf.html" as wtf %}{{ wtf.quick_form(form) }}

    这里写图片描述

0 0